0

単一のフィールドを検証することは問題ありません。self.cleaned_data は値を示しています!

しかし、クリーンメソッドで self.cleaned_data を出力したい場合、結果はすべての値に対して None です! それはどのように起こるのでしょうか?私も Super() でデータを取得しようとしました...しかし運がありません...何かアイデアはありますか?

def validator_number_or_one_letter(fieldvalue):
    if not re.match("^[A-Za-z0-9]*$", fieldvalue) or len(fieldvalue)>1:

        raise forms.ValidationError("Error, Error!")


class CodeForm(forms.Form):

    letter_one = forms.CharField(widget=forms.TextInput(attrs={'placeholder': '#','requiried':'required','required': 'true','size':'1','class':'first-field' }))
    letter_two =forms.CharField(widget=forms.TextInput(attrs={'placeholder': '#','requiried':'required','required': 'true','size':'1' }))
    letter_three = forms.CharField(widget=forms.TextInput(attrs={'placeholder': '#', 'requiried':'required','required': 'true','size':'1' }))
    letter_four = forms.CharField(widget=forms.TextInput(attrs={'placeholder': '#','requiried':'required','required': 'true','size':'1' }))
    letter_five = forms.CharField(widget=forms.TextInput(attrs={'placeholder': '#','requiried':'required','required': 'true','size':'1' }))

    def clean(self):
        #cleaned_data = super(CodeForm, self).clean()  ###this does not work either
        #print cleaned_data ###this does not work either
        print self.cleaned_data['letter_one']

    def clean_letter_one(self):
        validator_number_or_one_letter(self.cleaned_data['letter_one'])

    def clean_letter_two(self):
        validator_number_or_one_letter(self.cleaned_data['letter_two'])

    def clean_letter_three(self):
        validator_number_or_one_letter(self.cleaned_data['letter_three'])

    def clean_letter_four(self):
        validator_number_or_one_letter(self.cleaned_data['letter_four'])

    def clean_letter_five(self):
        validator_number_or_one_letter(self.cleaned_data['letter_five']) 
4

1 に答える 1

0

それが唯一の問題かどうかはわかりませんが、 clean_() メソッドはクリーンな値を返す必要があります。

于 2013-03-09T00:23:34.903 に答える