Подтвердить что ты не робот

Django Overriding Model Clean() vs Save()

У меня есть несколько действий, которые нужно выполнить при сохранении моделей, особенно от администратора. Я использую несколько полей и проверяю, чтобы заполнить одно поле или другое. Я также создаю полевую пулю. RIght теперь они разделены между переопределением функций очистки и сохранения. Он работает сейчас, но мне любопытно, когда использовать их каждый. Я просмотрел документы, и я не мог найти, что именно использовать.

4b9b3361

Ответ 1

Вы должны использовать clean для работы, связанной с валидацией, и для разбора/изменения/очистки другой информации. Здесь могут произойти капитализация полей и создание пули. Я также использую clean для принудительного использования поля типа post_type для определенного значения в прокси-моделях. Если вы очистите django.core.exceptions.ValidationError('error text') внутри чистой, 'error text' добавляется в form.non_field_errors.

Сохранить - это место, где можно изменить способ сохранения модели. Например, я использовал save для создания обрезки загруженного изображения. ValidationError не пойманы, если подняты здесь, и я чувствую, что это самая важная практическая разница между ними.