Форум сайта python.su
Всем привет. Как быть, если хочу проверку делать для каждого поля. А именно, хочу сделать вот так проверку пароля
def clean_passwd(self):
p1 = self.cleaned_data['passwd']
p2 = self.cleaned_data.get('passwd2')
Офлайн
При обработки формы джанга обрабатывает поля последовательно. То есть в конце стандартной обработки поля вызывает clean_XXX и только после этого обработанное значение помещается в cleaned_data.
В Вашем случае поле passwd2 скорее всего еще не обрабатывалось, соответственно оно будет пустым.
Решение - либо поступать как в букварях - в методе clean, когда обработаны все поля, либо поставить поле passwd2 до passwd в определении формы, чтобы при начале обработки clean_passwd второе поле было уже обработано или перенести функционал в clean_passwd2
Офлайн
Хм. очень интересно. Не знал о такой ситуации. Всегда думал, что вначале все данные берутся с формы (визуальной) и передаются в форму forms.py…
Спасибо.
Офлайн
ziroНе совсем так. Сначала значение из поля попадает в cleaned_data, потом уже вызывается clean_имяэтогополя. потом переходим к следующему полю.
При обработки формы джанга обрабатывает поля последовательно. То есть в конце стандартной обработки поля вызывает clean_XXX и только после этого обработанное значение помещается в cleaned_data.
Офлайн