Для чего используется метод clean в модели Django ORM?

Model.clean() предназначен для пользовательской валидации модели, особенно правил между несколькими полями. Он может выбрасывать ValidationError и вызывается как этап full_clean().

Короткий ответ

Что ответить на собеседовании

Model.clean() предназначен для пользовательской валидации модели, особенно правил между несколькими полями. Он может выбрасывать ValidationError и вызывается как этап full_clean().

Подробный разбор

Ответ с пояснениями

Model.clean() предназначен для пользовательской валидации модели, особенно правил между несколькими полями. Он может выбрасывать ValidationError и вызывается как этап full_clean().

Например, здесь проверяют, что дата окончания не раньше даты начала. Обычный save() не запускает clean() и full_clean() автоматически, поэтому путь программного сохранения должен учитывать валидацию явно.

ModelForm выполняет собственный процесс проверки модели, но это не защита всех записей в БД. Для критических инвариантов нужны также ограничения базы: два конкурентных запроса могут оба пройти предварительную проверку. Не путайте Model.clean с Form.clean и не используйте его как скрытый механизм сохранения.

Источник: docs.djangoproject.com.

ИИ-помощник для собеседований

Хочешь уверенно проходить собеседования?

Попробуй ИИ-помощник для собеседований: слышит вас и собеседника, анализирует экран, подсказывает ответы в реальном времени, работает без VPN и не попадает в захват экрана.

Подробнее