Django [';管理表单数据丢失或已被篡改';]

Django [';管理表单数据丢失或已被篡改';],django,django-forms,Django,Django Forms,我在尝试保存表单时遇到以下错误: ['ManagementForm数据丢失或已被篡改'] 观点: def scoreInput1View(request): Input1FormSet = modelformset_factory(Player, fields=('name', 'week1')) if request.method == 'POST': form = Input1FormSet(request.POST) form.save(

我在尝试保存表单时遇到以下错误:

['ManagementForm数据丢失或已被篡改']

观点:

def scoreInput1View(request):

    Input1FormSet = modelformset_factory(Player, fields=('name', 'week1'))

    if request.method == 'POST':
        form = Input1FormSet(request.POST)
        form.save()

    form = Input1FormSet()

    players = Player.objects.all()

    context = {
        'form': form,
        'players': players
    }

    template_name = 'leaderboard/input1.html'

    return render(request, template_name, context)
HTML:

{%csrf\u令牌%}
名称
分数
第17分
{{form.management_form}}
{%形式的字段为%}
{{field.name}
{{field.week1}}
{%endfor%}

有人知道这是什么原因吗?

查看html源代码,验证隐藏的管理表单字段是否正确。查看
request.POST
查看提交的内容。注意:保存前应检查表单集是否有效:
if form.is_valid():form.save()else:…
注意,表单中的字段也不能执行
,它是一个表单集,即使只有一个表单,表单集的迭代器也会返回表单。因此,您需要嵌套循环:
for formset中的表单:for form中的字段:
使用{%for form%}正确呈现页面,在表单中循环,然后字段不会呈现任何内容。html源代码没有关于管理表单的任何信息?对不起,您的命名让我感到困惑。您所称的
字段
实际上是一个
表单
字段。name
是表单的
名称
字段。最好将
form
重命名为
formset
并在formset
中循环
,然后显示
form.name
form.week1
字段。但是
form.management\u form
应该生成一些隐藏的输入字段。可以将其移到表外。基本上,您需要确保提交的数据包含管理表单数据。因此,检查HTML源代码,并检查
请求.POST
数据。
<form method='POST'> {% csrf_token %}
  <table>
    <tr>
      <th>Name</th>
      <th>Score</th>
      <th>17th Score</th>
    </tr>
    {{ form.management_form }}
    {% for field in form %}
    <tr>
      <td>{{ field.name }}</td>
      <td>{{ field.week1 }}</td>
    {% endfor %}
    </tr>
  </table>
<input type='submit' value="Save">
</form>