Python Web & Scripts — Django, FastAPI, скрипты

<b>Pydantic ломается не на валидации, а на неявных правилах модели</b>

<b>Pydantic ломается не на валидации, а на неявных правилах модели</b>

Если поле может быть пустым, это должно быть видно в типе, а не спрятано в комментарии. Если значение приходит из разных источников, нормализуйте его до модели, а не внутри бизнес-логики. И если объект используется как контракт между слоями, держите его узким: лишние поля чаще всего превращаются в тихие баги, а не в удобство.

Три ошибки встречаются особенно часто:
• смешивают <code>str | None</code> и обязательное поле с дефолтом, потом ловят странные ответы API;
• валидируют только вход, но не проверяют данные после преобразований;
• тащат в одну модель и запрос, и ответ, и внутреннее состояние.

Сильная сторона Pydantic — не в «магии», а в дисциплине границ. Модель должна описывать форму данных, а не логику. Для правил используйте валидаторы, для преобразований — явные функции, для внешнего JSON — отдельные схемы. Тогда ошибки всплывают рядом с входом, а не в середине цепочки вызовов.

Если модель стала длиннее экрана, это обычно сигнал: пора резать её на несколько контрактов.
Этот пост опубликован в Telegram-канале Python Web & Scripts — Django, FastAPI, скрипты. Подписаться можно по ссылке: @python_web_scripts.
start

Готовы запустить рекламу через сеть public.tg?

Новый оффер, продукт, GEO, кейс, событие или партнёрский запуск — соберём маршрут под задачу и отдадим медиаплан.

Telegram для медиаплана: @dumay. Быстрый тест: $20 за канал, $1000 за пакет по сети.