Определите обязательность, допустимость null и значение по умолчанию раздельно.
Зачем
Зачем это нужно
Проверьте частичное обновление на отсутствующем и явно пустом поле.
Разделите схемы ввода и ответа, чтобы внутренние значения не выходили наружу.
Вопросы
Частые вопросы
Как задать пример с PATCH?
«Учебный профиль имеет nickname=Лис. После {} имя остаётся Лис; после явного null становится пустым; после нового текста заменяется». Попросите схему Pydantic 2 и ожидаемый набор полей при выгрузке. Эти три примера задают семантику обновления. Если бездумно выгружать все значения по умолчанию, отсутствие поля может ошибочно превратиться в команду стереть существующие данные пользователя.
Почему Optional не всегда означает необязательное поле?
Аннотация допустимого типа и требование наличия поля — разные части модели. Для Pydantic 2 проверьте также значение по умолчанию. Попросите таблицу из отсутствующего ключа, null и нормального значения для вашей конкретной схемы. Название Optional в коде не должно заменять контракт: клиенту важно, какой JSON принимается и какая ошибка возвращается в каждом из трёх случаев.
Как переносить межполевой валидатор?
Передайте старую модель, новую версию и примеры, где проверка должна пройти или отказать. Например, конец периода не может быть раньше начала. Попросите объяснить момент выполнения проверки и доступные данные, а не только заменить имя декоратора. Добавьте отсутствующее начало и неверный тип даты: порядок базовой валидации и межполевого правила влияет на итоговые сообщения об ошибке.
Как убедиться, что схема ответа не раскрывает лишнее?
Задайте разрешённые поля ответа и проверьте объект, содержащий дополнительные внутренние значения. Например, наличие password_hash в исходной записи не должно приводить к его сериализации клиенту. Проверяйте фактический JSON, а не только определение класса. Енотик предлагает схему по переданному контексту; запуск валидаторов и сравнение поведения старой и новой версии выполняются в вашем проекте.
Рядом
Соседние страницы каталога
Дальше — весь каталог задач: поиск по названию, темы и фильтры.