2011-03-03 58 views
3

表单集创建在views.py:ManagementForm数据丢失错误而表单集验证

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 

这导致异常类型:ValidationError在/应用程序/索引/ 例外值:[u'ManagementForm数据丢失或被篡改'] django-docs 确实提到过这一点。我不知道如何提供管理数据。我想是这样this

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

但我仍然会得到相同的error.Any想法?谢谢。

+0

您提供的Django文档链接已过时。以下是两种替代方案: https://docs.djangoproject.com/zh/1.10/topics/forms/formsets/#understanding-the-managementform 和 https://docs.djangoproject.com/zh/1.10/topics/forms/modelforms /#using-the-formset-in-the-template – 2016-11-29 19:26:13

回答

8

渲染formset.management_form模板

{{fset.management_form}} 

这允许管理表格数据可用并因此数据是完整的。但是如果预先在添加修改时添加前缀应该修复该问题。

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

管理数据是否在request.POSThttp://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 }}

+0

对不起,我确实得到它了。是的,我确实参考了那个文档。我不确定是如何提供额外的信息? – stackover 2011-03-03 17:10:43

+0

谢谢你的线索Yuji – stackover 2011-03-03 17:34:01

+0

没问题。心连心 – 2011-03-03 17:57:06