1

私は数時間これに頭を悩ませてきたので、今度はあなたの番です:)

で独自のフィールドを作成するフォームを作成しました__init__。それ以外に何が/なぜそれがそれほど重要ではないので、これはまだ同じ問題を示す劇的に単純化された例です:

class TestForm(forms.Form):
    def __init__(self, variable, *args, **kwargs):
        super(TestForm, self).__init__(args, kwargs)
        for i in range(0, variable):
            self.fields['f_%d' % i] = forms.BooleanField(label="Field %d" % i)

# and in the view:
return render(request, 'survey/form.html', {'f': TestForm(variable=10)})

そして、テンプレートはただ{{f.as_p}}です。コードは機能します、エラーメッセージも含まれています。各BooleanFieldsから、必須であるという10個のエラーがあります。しかし、私は何も投稿しておらず、投稿データをTestFormに渡していないことは確かです。上に表示されているのは、私が実行しているものです(自分で試してみてください)。

だから私は何が間違っているのですか?フォームは実行is_valid()されていますか?実行されている場合、その理由は何ですか?

4

1 に答える 1

2

あなたの__init__方法は次のとおりです。

def __init__(self, variable, *args, **kwargs):
    super(TestForm, self).__init__(*args, **kwargs)

それがあなたの問題なのか、質問のタイプミスなのかわかりません。サンプルコードは、フォームが で初期化されることを意味しますdata=args

于 2012-09-19T13:28:47.360 に答える