3

views.py でのフォームセットの作成:

ffact = formset_factory(Form,extra=somenum]))
fset = ffact(prefix='pfix')

views.py での検証:

ffact = formset_factory(Form,extra=3))
fset = ffact(request.POST) 
if fset_is.valid():
    blah blah

これにより、Exception Type: ValidationError at /app/index/ Exception Value: [u'ManagementForm data is missing or has been tampered with'] django-docs がこれについて言及しました。管理データの提供方法がわかりません。私はこのようなことを試しました、

try:
  fset = ffact(request.POST)
except ValidationError:
  fset = None
if fset and fset.is_valid():
  blah blah

しかし、それでも同じエラーが発生します。アイデアはありますか? ありがとう。

4

2 に答える 2

8

テンプレートで formset.management_form をレンダリングする

{{fset.management_form}}

これにより、管理フォーム データが使用可能になり、データが完成します。ただし、フォームセットの生成中にプレフィックスが追加された場合

プレフィックスを追加すると、その問題が修正されます。

fset = ffact(request.POST,prefix='pfix')
于 2011-03-03T17:33:37.393 に答える
8

管理データはありrequest.POSTますか? http://docs.djangoproject.com/en/dev/topics/forms/formsets/#understanding-the-managementform

次の情報が に含まれている必要がありますrequest.POST:

data = {
    'form-TOTAL_FORMS': u'1',
    'form-INITIAL_FORMS': u'0',
    'form-MAX_NUM_FORMS': u'',
}

非表示フィールドをレンダリングするためのショートカットがあります。{{ my_formset.management_form }}

于 2011-03-03T16:53:04.957 に答える