Найти - Пользователи
Полная версия: Помогите снова с cleaned_data
Начало » Django » Помогите снова с cleaned_data
1
dissdoc
Всем привет. Как быть, если хочу проверку делать для каждого поля. А именно, хочу сделать вот так проверку пароля
def clean_passwd(self):
p1 = self.cleaned_data['passwd']
p2 = self.cleaned_data.get('passwd2')
Но p2 всегда null. Как мне из проверки одного поля взять значение из другого поля?
Я это где-то видел. Но никак не могу найти. Доки сейчас шерстю. Но там везде встречается один параметр, а проверка паролей идет в функции clean :(
ziro
При обработки формы джанга обрабатывает поля последовательно. То есть в конце стандартной обработки поля вызывает clean_XXX и только после этого обработанное значение помещается в cleaned_data.

В Вашем случае поле passwd2 скорее всего еще не обрабатывалось, соответственно оно будет пустым.

Решение - либо поступать как в букварях - в методе clean, когда обработаны все поля, либо поставить поле passwd2 до passwd в определении формы, чтобы при начале обработки clean_passwd второе поле было уже обработано или перенести функционал в clean_passwd2
dissdoc
Хм. очень интересно. Не знал о такой ситуации. Всегда думал, что вначале все данные берутся с формы (визуальной) и передаются в форму forms.py…
Спасибо.
tier
ziro
При обработки формы джанга обрабатывает поля последовательно. То есть в конце стандартной обработки поля вызывает clean_XXX и только после этого обработанное значение помещается в cleaned_data.
Не совсем так. Сначала значение из поля попадает в cleaned_data, потом уже вызывается clean_имяэтогополя. потом переходим к следующему полю.
This is a "lo-fi" version of our main content. To view the full version with more information, formatting and images, please click here.
Powered by DjangoBB