[Python] 無効なDjangoフォーム


Answers

フォームエラーをチェックすることができるはずです。 このようなものは、あなたがエラーを見ることができるように機能するかもしれません。 (申し訳ありませんがこれは未テストです)

https://docs.djangoproject.com/en/dev/topics/forms/#customizing-the-form-template

>>> f = ActivitySaveForm(data)
>>> f.non_field_errors()
>>> field_errors = [ (field.label, field.errors) for field in f] 
Question

私はis_valid()テストに失敗したフォームを持っています。 同じデータ入力でテストに合格する同じフォームを作成しました。 なぜ誰かが合格しなかったのか、失敗するのかは分かりません。

フォームは次のとおりです。

choices = ( (1,'Yes'),(0,'No'),
      )

class ActivitySaveForm(forms.Form):
    name = forms.CharField(
        label=u'Activity Name',
        widget=forms.TextInput(attrs={'size': 64})
    )
    url = forms.URLField(
        label=u'URL',
        widget=forms.TextInput(attrs={'size': 64})
    )
    desc = forms.CharField(
        label=u'Describe it',
                widget=forms.TextInput(attrs={'size': 250})
    )
    created = forms.DateField(
        label=u'Date Entered',initial=datetime.date.today,
    )
    priority = forms.CharField(
        label=u'priority: 1-5',
            widget=forms.TextInput(attrs={'size': 1})
    )
    difficulty = forms.CharField(
        label=u'How hard is it? 1-5',
            widget=forms.TextInput(attrs={'size': 1})
    )
    done = forms.TypedChoiceField(choices=choices, widget=forms.RadioSelect, coerce=int
    )   
    tags = forms.CharField(
        label=u'Tags',required=False,
            widget=forms.TextInput(attrs={'size': 64})
    )
#def __init__(self, *args, **kwargs):
    #super(CircuitForm, self).__init__(*args, **kwargs)

    #for key in self.fields:
        #self.fields[key].required = False


class AcTest(forms.Form):
    name = forms.CharField(
        label=u'Activity Name',
        widget=forms.TextInput(attrs={'size': 64})
    )
    url = forms.URLField(
        label=u'URL',
        widget=forms.TextInput(attrs={'size': 64})
    )
    desc = forms.CharField(
        label=u'Describe it',
                widget=forms.TextInput(attrs={'size': 250})
    )
    created = forms.DateField(
        label=u'Date Entered',initial=datetime.date.today,
    )
    priority = forms.CharField(
        label=u'priority: 1-5',
            widget=forms.TextInput(attrs={'size': 1})
    )
    difficulty = forms.CharField(
        label=u'How hard is it? 1-5',
            widget=forms.TextInput(attrs={'size': 1})
    )
    done = forms.TypedChoiceField(choices=choices, widget=forms.RadioSelect, coerce=int
    )   
    tags = forms.CharField(
        label=u'Tags',required=False,
            widget=forms.TextInput(attrs={'size': 64})
    )

ここでは両方のテストと結果があります。

>>> data = {'name':'test',
...         'url': 'www.test.com',
...         'desc':'test desc',
...         'created': '01/01/1900',
...         'priority':1,
...         'difficulty':1,
...         'desc':'test desc',
...         'tags':'test desc'}
>>> f=ActivitySaveForm(data)
>>> f.is_valid()
False
>>> f=AcTest(data)
>>> f.is_valid()
True

このエラーをさらに診断する方法がわからず、動作させる方法が見つからない。 あなたのお手伝いをありがとう。