期待どおりに動作しない ModelForm があります。このメソッドis_valid()
は、空のフィールドに対しても True を返します。さらにclenead_data
、期待されるフィールドがありませんが、そこにあるはずのないフィールドしかありません (フォームによってレンダリングされないため)。私のシナリオは次のようなものです:
私のフォームクラス:
class MyForm(ModelForm):
class Meta:
model = MyModel
# fields = ('one', 'two', 'three')
widgets = {
'fieldA': SelectDateWidget(),
'fieldB': forms.HiddenInput(),
# ...
}
fieldX = forms.ChoiceField(widget=forms.RadioSelect(),
choices=(...),
initial=A_VALUE)
fieldY = forms.ChoiceField(widget=forms.RadioSelect(),
choices=(...),
initial=A_VALUE)
フォームは期待どおりにページにレンダリングされ、POST を使用して送信されます (すべてのデータが正しく送信されます)。次に、コントローラーに次のようなものがあります。
self.form = MyForm(request.POST)
呼び出す前と後にもself.form.cleaned_data
、内部にフィールドが1つしかありません(モデルに属するフィールドですが、フォームでは予期されていません)is_valid()
。また、Meta クラスでタプルを提供する特定の「フィールド」を宣言しようとしましたが、逆に「除外」を使用して望ましくないものを指定しようとしましたが、うまくいきませんでした。
これは非常に漠然としています...しかし、いくつかの提案をいただけますか?
ps。ModelForm を使用した同じアプローチは、私のプロジェクトの他のセクションでも完全に機能します:P
...さらに、インタラクティブ シェル ( python manage.py shell
) を開いて、次のことを試してみます。
f = MyForm({})
f.is_valid()
次の例外が発生します。
Traceback (most recent call last):
File "<console>", line 1, in <module>
File "/Users/davidezanotti/MyPythonEnv/lib/python2.7/site-packages/django/forms/forms.py", line 126, in is_valid
return self.is_bound and not bool(self.errors)
File "/Users/davidezanotti/MyPythonEnv/lib/python2.7/site-packages/django/forms/forms.py", line 117, in _get_errors
self.full_clean()
File "/Users/davidezanotti/MyPythonEnv/lib/python2.7/site-packages/django/forms/forms.py", line 272, in full_clean
self._clean_fields()
File "/Users/davidezanotti/MyPythonEnv/lib/python2.7/site-packages/django/forms/forms.py", line 290, in _clean_fields
value = getattr(self, 'clean_%s' % name)()
TypeError: 'NoneType' object is not callable