BaseForm.is_valid()
BaseForm._get_errors()
BaseForm.full_clean()
BaseForm._post_clean() -> {
Model.clean_fields()
Model.clean()
BaseForm.validate_unique() -> Model.validate_unique()
}
Т.е. при вызове метода формы is_valid() и при наличии данных сначала вызывается метод full_clean(), который проходится по всем полям формы и валидирует каждое. Сначала значения приводятся к питоническому виду методом to_python() или выбрасывается исключение ValidationError. Затем данные валидируются "персональными" валидаторами полей, вызывается clean_<field>(), если таковой наличиствует. Следом, full_clean вызывает метод clean(). И если форма - экземпляр класса ModelForm, то _post_clean() делает следующее: присваивает значения экземпляру модели, независимо от результата is_valid; вызывает метод clean() модели.
Отправить комментарий