/ /私のclean関数でself.cleaned_dataの値にアクセスできないのはなぜですか? - django、django-forms

どうすれば私のclean関数でself.cleaned_dataの値にアクセスできないのですか? - django、django-forms

私は私のDjangoフォームのためのきれいな関数を書いた。私が定義した 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は "username"のキーエラーを生成します。

なぜ私は、 self.data 配列には含まれませんが、 self.cleaned_data 私のクリーンな機能のアレイ?

もう一つの注意点として、この問題は重要なのでしょうか?私はちょうど使用することができます self.data

回答:

回答№1は0

個々のフィールドの検証とクリーニングは、 form.clean. username 入力されたデータが有効である場合にのみ、cleaned_dataに追加されます。これは、 self.cleaned_data.get またはエラーがないかどうかを確認する self.errors 個々の項目が有効でない場合に必要ではない可能性のある追加の検証について、あなたの清潔で早期の退会の早い段階で。