在formset验证时,ManagementForm数据丢失错误

时间:2011-03-03 16:39:38

标签: django validation django-forms formset

在views.py中创建formset:

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

这导致异常类型:/ app / index /的ValidationError 例外值:[u'ManagementForm数据丢失或被篡改'] django-docs 确实提到过这个。我不确定如何提供管理数据。我试过像this

这样的东西
try:
  fset = ffact(request.POST)
except ValidationError:
  fset = None
if fset and fset.is_valid():
  blah blah

但我仍然得到同样的错误。任何想法?感谢。

2 个答案:

答案 0 :(得分: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 }}

答案 1 :(得分:8)

在模板中呈现formset.management_form

{{fset.management_form}}

这允许管理表单数据可用,因此数据已完成。但是如果在创建表单集时添加了前缀

添加前缀应解决该问题。

fset = ffact(request.POST,prefix='pfix')