1

私はテクノロジーに慣れていないので、質問が単純すぎる場合は事前にお詫びします。

私は self.cleaned_data を使用して、ユーザーが入力した選択したデータを取得しています。そして、 clean が呼び出されたときに機能しますが、私の save メソッドでは機能しません。

ここにコードがあります

Forms.py

def clean_account_type(self):
    if self.cleaned_data["account_type"] == "select": # **here it works**
        raise forms.ValidationError("Select account type.")

def save(self):
    acc_type = self.cleaned_data["account_type"] # **here it doesn't, (NONE)**

    if acc_type == "test1":
        doSomeStuff()

save を呼び出したときに機能しない理由はありますか?

これが私のviews.pyです

def SignUp(request):
    if request.method == 'POST':
        form = SignUpForm(request.POST)

        if form.is_valid():
            form.save()
            return HttpResponseRedirect('/')

前もって感謝します。

4

1 に答える 1

6

フォームのclean_<field_nameメソッドは、クリーンな値返すか、ValidationError. ドキュメントからhttps://docs.djangoproject.com/en/1.4/ref/forms/validation/

上記の一般的なフィールドの clean() メソッドと同様に、このメソッドは、何かを変更したかどうかに関係なく、クリーンなデータを返す必要があります。

簡単な変更は次のようになります

def clean_account_type(self):
    account_type = self.cleaned_data["account_type"]
    if account_type == "select":
        raise forms.ValidationError("Select account type.")
    return account_type
于 2012-07-27T22:57:42.353 に答える