【问题标题】:ManagementForm data missing error while formset validation表单集验证时 ManagementForm 数据丢失错误
【发布时间】:2011-07-08 04:58:40
【问题描述】:

在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/ 异常值:[u'ManagementForm 数据丢失或被篡改']django-docs 确实提到了这一点。我不确定如何提供管理数据。我试过类似this

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

但我仍然得到同样的错误。有什么想法吗?谢谢。

【问题讨论】:

标签: django validation django-forms formset


【解决方案1】:

管理数据在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 }}

【讨论】:

  • 很抱歉,我没听懂。是的,我确实参考了该文档。我不确定如何提供其查找的额外信息?
【解决方案2】:

在模板中渲染 formset.management_form

{{fset.management_form}}

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

添加前缀应该可以解决这个问题。

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

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2013-08-04
    • 1970-01-01
    • 1970-01-01
    • 2014-10-09
    • 1970-01-01
    • 1970-01-01
    • 2014-12-28
    相关资源
    最近更新 更多