我有一个我要保存到模型的模型集。
在我的模板中,以下工作完美(意味着当我点击提交时表单会保存到数据库中):
{{ 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'
我在前两个示例中使用的值相同(并且正确保存)。
答案 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_FORMS
,form-INITIAL_FORMS
和form-MAX_NUM_FORMS
)
请参阅:https://docs.djangoproject.com/en/1.7/topics/forms/formsets/#understanding-the-managementform