/ / Ako to, že nemôžem pristupovať k hodnotám self.cleaned_data vo svojej čistej funkcii? - django, django-formy

Ako to, že nemôžem pristupovať k hodnotám self.cleaned_data v mojej čistej funkcii? - django, django-formy

Napísal som pre moju formu Django čistú funkciu. Som definoval OPTIONAL_PASSWORD_INPUT a OPTIONAL_REPEAT_PASSWORD_INPUT vyššie ako polia zadávania hesla:

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)

Ak sa zmením if self.data["username"] and not self.data["password"]: na if self.cleaned_data["username"] and not self.cleaned_data["password"]:, Django vytvorí kľúčovú chybu pre "používateľské meno".

Prečo mám prístup k hodnotám self.data ale nie tie z self.cleaned_data pole v mojej čistej funkcii?

Ďalšou poznámkou je táto otázka aj záležitosť? Mohol by som len použiť self.data?

odpovede:

0 pre odpoveď č. 1

Overenie a čistenie jednotlivých polí sa vykoná pred zavolaním form.clean. username sa pridá do vyčistených údajov iba vtedy, ak boli zadané údaje platné. To znamená, že by ste mali používať self.cleaned_data.get alebo skontrolujte, či sa vyskytli nejaké chyby self.errors čoskoro vo vašom čistom a spravodlivom kauze na dodatočnú validáciu, ktorá nemusí byť potrebná, ak jednotlivé polia nie sú platné.