1

フォームセットからフォームデータにアクセスする際に問題が発生しました。コードを添付しました:

####FORM
class ActionTypeForm(forms.Form):
     action_name = models.CharField(max_length=20)
     description = models.CharField(max_length=250, blank=True, null=True)


####VIEW
dataset = request.POST
ActionTypeFormSet = formset_factory(ActionTypeForm)
formset = ActionTypeFormSet(dataset)

if formset.is_valid():
     for form in formset.cleaned_data:  #I ALSO TESETED formset.forms
           customer.create_actiontype(form['action_name'], form['description'])

エラーは、form['action_name']を取得できないことです。formset.is_valid()はTrueを返します

エラー

例外タイプ:KeyError

例外値:'action_name'

投稿データ

form-0-action_name u'a '

form-2-description u'sadsa'

フォーム-0-説明u'a'

フォーム-MAX_NUM_FORMSu''

form-1-description u'asd'

フォーム-TOTAL_FORMSu'3 '

form-1-action_name u'as'

form-INITIAL_FORMS u'0 '

csrfmiddlewaretoken u'c4fa9ddb4ec69ac639d7801eb14979f2'

form-2-action_name u'asda'

4

2 に答える 2

3

主な問題は、空白のフォームがあることです。フォーム クラス定義でモデル フィールドを使用していますが、これは django のフォーム フレームワークではどうすればよいかわかりません。Django モデル != Django フォーム。

フォームセットは、もちろんフォームフィールドを持たない空のフォームを検証して返します。

Formset有効なフォーム フィールドを持つフォームから を作成するか、 から を作成する必要がありModelFormsetますModel

  • 更新:最初はフォームセットには がないと思っていましcleaned_dataたが、すべてのフォームのcleaned_datasのリストを返すと思います。つまり、コードの問題は上記のものです。
于 2011-12-25T07:55:13.327 に答える
0

フォームセットは、関連付けられているすべてのフォームを格納し、フォームself.formsセットを反復処理するとiter(self.forms)、フォームのイテレータが返されます。

データは見栄えPOSTが良いので、次のようにしてデータを機能させることができます。

if formset.is_valid():
    for form in formset: 
        customer.create_actiontype(form.action_name, form.description)
于 2011-12-25T09:57:24.947 に答える