
Хватит дублировать валидацию в Django: как я подружил Pydantic с ORM и перестал страдать
Artem7898 19 минут назад Хватит дублировать валидацию в Django: как я подружил Pydantic с ORM и перестал страдать Средний 7 мин 0 Python * Django * Веб-разработка * Проектирование API * Open source * Обзор Recovery Mode...
Anthropic — What company has the best second artificial intelligence model at the end of June?
В сфере искусственного интеллекта произошло заметное событие. Artem7898 19 минут назад Хватит дублировать валидацию в Django: как я подружил Pydantic с ORM и перестал страдать Средний 7 мин 0 Python * Django * Веб-разработка * Проектирование API * Open source * Обзор Recovery Mode Типизированный, унифицированный и async-first инструментарий для DjangoПредставь: ты пишешь научный сервис. Есть модель исследователя, у которой h_index не может быть отрицательным. Ты, как добросовестный разработчик, описываешь это правило в Pydantic-схеме красиво, строго, типизированно.
А потом начинается ад: те же самые «не может быть отрицательным» ты вынужден повторять в DRF-сериализаторе, в Django-форме, а если ещё и админку кастомизируешь то и там. Три, пять, десять мест, где разбросана одна и та же бизнес-логика. У меня эта боль копилась годами, пока я не сказал «хватит» и не написал django-nova фреймворк, который делает Pydantic единственным источником правды для всей экосистемы Django.
Технические детали
Давай разберёмся, как удалось объединить эти две вселенные без боли, циклических импортов и магии, которая ломается на каждом обновлении Python. Контекст: почему это важно не только «ленивым»Обычно дублирование валидации списывают на лень разработчика. Но в корпоративной и научной разработке ставки выше.
Представь: данные проходят долгий конвейер вычислений, и где-то между этапами отрицательный h-index тихо просачивается в базу. Недели расчётов насмарку. Silent data corruption вот настоящий враг.
Я видел, как это ломало исследовательские проекты: люди доверяли ORM, а правила жили только на уровне API или форм, и при прямом обращении к save() база принимала мусор. Миссия django-nova проста: любое сохранение модели должно проходить сквозь фильтр Pydantic. Один раз описал больше нигде не повторяешь.
Отраслевые последствия
И да, это работает даже если ты вызываешь article. save() прямо в shell. Как это выглядит со стороны: от тройного дублирования к одной строкеВ классическом Django + DRF ты вынужден писать так (посмотри, я подожду, пока ты пересчитаешь повторы):# models.
py class Researcher(models. Model): h_index = models. IntegerField(default=0) # 1.
Pydantic-схема class ResearcherSchema(BaseModel): h_index: int @field_validator("h_index @classmethod def check_h_index(cls, v: int) -> int: if v < 0: raise ValueError("h_index не может быть отрицательным return v # 2. DRF Serializer — повторяем class ResearcherSerializer(serializers. ModelSerializer): h_index = serializers.
Событие, по словам экспертов, усилит конкуренцию в сфере ИИ.




