Уведомления

Группа в Telegram: @pythonsu
  • Начало
  • » Django
  • » Валидация. В каком месте разместить код. [RSS Feed]

#1 Дек. 27, 2018 13:42:23

hellwood
Зарегистрирован: 2015-07-04
Сообщения: 5
Репутация: +  0  -
Профиль   Отправить e-mail  

Валидация. В каком месте разместить код.

Добрый день. Возможно ответ заезжен, но все таки. Ранее никогда не задумался над тем куда вставлять код с валидацией поля. В случае с формами - в класс Forms для модели. В случае с DRF в модели Serializer.

Но, логичнее всего, как мне кажется, валидацию поля модели производить именно в классе самой модели. Тогда мы имеем валидацию на самом нижнем уровне и не надо будет дублировать код в форме, сериализаторе и т.п

Но кто и каким образом это делает? Например такой пример:

Есть 2 модели:

“тип товара”
“продажа”
В модели “продажа” есть ссылка на модель “тип товара” и кол-во.
При продаже мы должны проверить наличие товара на складе (модель “тип товара”).
Т.е при задании модели “продажа” должна вызываться валидация, которая проверяет кол-во товара из модели “тип товара”.

https://docs.djangoproject.com/en/2.1/ref/validators/#writing-validators подобное решение не подходит, т.к передается только значение поля, но нет информации о других полях (например, в которых мы можем получить ссылку на модель “тип товара”).

Метод clean не вызывается сам по себе, переопределять метод save и в нем принудительно вызывать метод clean? В общем, прошу совета, какой best practise для подобных вещей?

Офлайн

  • Начало
  • » Django
  • » Валидация. В каком месте разместить код.[RSS Feed]

Board footer

Модераторировать

Powered by DjangoBB

Lo-Fi Version