Model.clean() предназначен для пользовательской валидации модели, особенно правил между несколькими полями. Он может выбрасывать ValidationError и вызывается как этап full_clean().
Для чего используется метод clean в модели Django ORM?
Model.clean() предназначен для пользовательской валидации модели, особенно правил между несколькими полями. Он может выбрасывать ValidationError и вызывается как этап full_clean().
Короткий ответ
Что ответить на собеседовании
Подробный разбор
Ответ с пояснениями
Model.clean() предназначен для пользовательской валидации модели, особенно правил между несколькими полями. Он может выбрасывать ValidationError и вызывается как этап full_clean().
Например, здесь проверяют, что дата окончания не раньше даты начала. Обычный save() не запускает clean() и full_clean() автоматически, поэтому путь программного сохранения должен учитывать валидацию явно.
ModelForm выполняет собственный процесс проверки модели, но это не защита всех записей в БД. Для критических инвариантов нужны также ограничения базы: два конкурентных запроса могут оба пройти предварительную проверку. Не путайте Model.clean с Form.clean и не используйте его как скрытый механизм сохранения.
Источник: docs.djangoproject.com.