Форум сайта python.su
Добрый день. Возможно ответ заезжен, но все таки. Ранее никогда не задумался над тем куда вставлять код с валидацией поля. В случае с формами - в класс Forms для модели. В случае с DRF в модели Serializer.
Но, логичнее всего, как мне кажется, валидацию поля модели производить именно в классе самой модели. Тогда мы имеем валидацию на самом нижнем уровне и не надо будет дублировать код в форме, сериализаторе и т.п
Но кто и каким образом это делает? Например такой пример:
Есть 2 модели:
“тип товара”
“продажа”
В модели “продажа” есть ссылка на модель “тип товара” и кол-во.
При продаже мы должны проверить наличие товара на складе (модель “тип товара”).
Т.е при задании модели “продажа” должна вызываться валидация, которая проверяет кол-во товара из модели “тип товара”.
https://docs.djangoproject.com/en/2.1/ref/validators/#writing-validators подобное решение не подходит, т.к передается только значение поля, но нет информации о других полях (например, в которых мы можем получить ссылку на модель “тип товара”).
Метод clean не вызывается сам по себе, переопределять метод save и в нем принудительно вызывать метод clean? В общем, прошу совета, какой best practise для подобных вещей?
Офлайн