0

期待どおりに動作しない 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
4

1 に答える 1