Переопределенная модель Django Clean () против Save () - PullRequest
29 голосов
/ 28 января 2012

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

1 Ответ

34 голосов
/ 29 января 2012

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

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

...