Django Admin обычно валидирует объект через ModelForm, а та вызывает модельную валидацию, включая Model.clean(). Ошибки ValidationError отображаются в форме до сохранения.
Как clean модели Django используется в Django Admin?
Django Admin обычно валидирует объект через ModelForm, а та вызывает модельную валидацию, включая Model.clean(). Ошибки ValidationError отображаются в форме до сохранения.
Короткий ответ
Что ответить на собеседовании
Подробный разбор
Ответ с пояснениями
Django Admin обычно валидирует объект через ModelForm, а та вызывает модельную валидацию, включая Model.clean(). Ошибки ValidationError отображаются в форме до сохранения.
clean() модели подходит для проверки взаимосвязи полей: например, дата окончания не раньше начала. Ошибку можно привязать к полю или сделать общей для формы. Это не то же самое, что clean() формы: у каждого свой контекст. Учитывайте исключённые из формы поля и не требуйте ещё не сохранённые m2m-связи в неподходящей фазе. Обычный вызов model.save() вне Admin не запускает full_clean автоматически, поэтому критичные инварианты дополнительно обеспечивают ограничениями БД и явной валидацией сервисного слоя.
Источник: github.com.