/ / Чому я не можу отримати доступ до значень self.cleaned_data в моїй чистій функції? - джанго, джанго-форми

Чому я не можу отримати доступ до значень self.cleaned_data в моїй чистій функції? - джанго, джанго-форми

Я написав чисту функцію для моєї форми Джанго. Я визначив OPTIONAL_PASSWORD_INPUT і OPTIONAL_REPEAT_PASSWORD_INPUT вище як поля вводу пароля:

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?

Відповіді:

0 для відповіді № 1

Індивідуальне підтвердження та очищення поля проводиться до виклику form.clean. username буде додано до cleaned_data тільки, якщо введені дані були дійсними. Це означає, що ви повинні або використовувати self.cleaned_data.get або перевірте наявність помилок self.errors на початку вашого чистого і справедливого поруки з додатковою перевіркою, яка може не знадобитися, якщо окремі поля недійсні.