Я написал чистую функцию для своей формы Django. Я определил OPTIONAL_PASSWORD_INPUT
и OPTIONAL_REPEAT_PASSWORD_INPUT
выше в качестве пароля поля ввода:Почему я не могу получить доступ к значениям self.cleaned_data в моей чистой функции?
class addNewMemberForm(SignUpForm):
username = forms.SlugField(required=False,
min_length=MIN_USER_NAME,
max_length=MAX_USER_NAME,
label="Username (optional)",
help_text="If left empty, we will generate a username for you."
)
password = OPTIONAL_PASSWORD_INPUT
password2 = OPTIONAL_REPEAT_PASSWORD_INPUT
def clean(self):
# if user name is filled out, so must be the password field.
if self.data["username"] and not self.data["password"]:
raise forms.ValidationError("If you specify a username, you must specify a password.")
return self.cleaned_data
def __init__(self, *args, **kwargs):
super(SignUpForm, self).__init__(*args, **kwargs)
self.fields.keyOrder = uniqueify(['username', 'email'] + self.fields.keyOrder)
Если изменить if self.data["username"] and not self.data["password"]:
к if self.cleaned_data["username"] and not self.cleaned_data["password"]:
, Django производит ключевую ошибку для «имени пользователя.»
Почему я могу получить доступ к значениям массива self.data
, но не массиву self.cleaned_data
в моей чистой функции?
С другой стороны, этот вопрос даже имеет значение? Могу ли я просто использовать self.data
?