【问题标题】:Django ModelFormset Validation ErrorDjango ModelFormset 验证错误
【发布时间】:2017-09-06 12:28:27
【问题描述】:

我收到验证错误:['ManagementForm 数据丢失或已被篡改']

当尝试提交模型表单集表单时,我似乎无法弄清楚为什么会发生这种情况。

代码:

--views.py

def formset_view(request):
    EmpFormSet = modelformset_factory(Employee,form=UpdateForm,extra = 0)

    if request.method == 'POST':
        formset = EmpFormSet(request.POST, queryset = Employee.objects.filter(companyid__company_user__id = request.user.id, prefix='formsettest')
        if formset.is_valid():
            for form in formset.forms:
                if form.is_valid():
                    form.save()
            redirect('/home/')
    else:
        formset = EmpFormSet(queryset = Employee.objects.filter(companyid__company_user__id = request.user.id, prefix = 'form2')

    return render(request, 'emp_update_list.html', {'formset': formset})

模板:

<form action="" method="post">
  {% csrf_token %}
          {{ formset.management_form }}

{{ formset.as_table }}
    <button type="submit" name="action" value="Submit">Submit</button>
</form>

--forms.py

class UpdateForm(ModelForm):

class Meta:
    model = Employee
    fields=('empid','forename','surname')

如您所见,我的模板中有管理表单,因此不确定导致此错误的原因。只有当我尝试提交表单集时才会发生这种情况。

错误似乎发生在视图中的行 - if formset.is_valid():

【问题讨论】:

    标签: python django django-forms


    【解决方案1】:

    问题是您为 GET 和 POST 请求使用了不同的前缀。提交表单时,管理表单数据因为前缀错误而被忽略,所以会出现ManagementForm data is missing or has been tampered with 错误。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2013-07-27
      • 1970-01-01
      • 1970-01-01
      • 2010-10-24
      • 2017-10-02
      • 2016-03-20
      • 2011-02-21
      相关资源
      最近更新 更多