У меня есть несколько действий, которые нужно выполнить при сохранении моделей, особенно от администратора. Я использую несколько полей и проверяю, чтобы заполнить одно поле или другое. Я также создаю полевую пулю. RIght теперь они разделены между переопределением функций очистки и сохранения. Он работает сейчас, но мне любопытно, когда использовать их каждый. Я просмотрел документы, и я не мог найти, что именно использовать.
Django Overriding Model Clean() vs Save()
Ответ 1
Вы должны использовать clean для работы, связанной с валидацией, и для разбора/изменения/очистки другой информации. Здесь могут произойти капитализация полей и создание пули. Я также использую clean для принудительного использования поля типа post_type
для определенного значения в прокси-моделях. Если вы очистите django.core.exceptions.ValidationError('error text')
внутри чистой, 'error text'
добавляется в form.non_field_errors
.
Сохранить - это место, где можно изменить способ сохранения модели. Например, я использовал save для создания обрезки загруженного изображения. ValidationError
не пойманы, если подняты здесь, и я чувствую, что это самая важная практическая разница между ними.