Django:[u'ManagementForm数据丢失或被篡改']

时间:2015-03-24 14:53:52

标签: django modelform formset

我有一个我要保存到模型的模型集。

在我的模板中,以下工作完美(意味着当我点击提交时表单会保存到数据库中):

{{ formset.management_form }}
{{ formset }}

即使这样也很有效:

{{ formset.management_form }}
{% for row in formset %}
    {{ row }}
{% endfor %}

但是,一旦我想像我这样设置我的formset(在表格中):

{{ formset.management_form }}
{% for row in formset %}
    {{ row.field1 }}
    {{ row.field2 }}
    {{ row.field3 }}
{% endfor %}

我得到了[u' ManagementForm数据丢失或被篡改过的数据]。

字段1到3与我要保存的模型完全对应。我真的无法弄清楚这一点!

我的追溯显示了这一点:

GET    No GET data
POST   Variable              Value
       form-0-field1         u'3'
       form-0-field2         u'3'
       form-0-field3         u'3'

我在前两个示例中使用的值相同(并且正确保存)。

2 个答案:

答案 0 :(得分:1)

我终于找到了答案(在文档中),正如我问我的问题时恰好解释了这个问题。第三个选项必须呈现{{row.id}},否则Django将创建验证错误。用户可以使用' style =" display:none;"'在内联html中,但必须呈现。

这是链接: https://docs.djangoproject.com/en/1.7/topics/forms/modelforms/#using-the-formset-in-the-template

经过测试,确实有效!

答案 1 :(得分:0)

您对表单的呈现不包含ManagementForm所需的其他数据(form-TOTAL_FORMSform-INITIAL_FORMSform-MAX_NUM_FORMS

请参阅:https://docs.djangoproject.com/en/1.7/topics/forms/formsets/#understanding-the-managementform