Django ModelFormset验证错误 [英] Django ModelFormset Validation Error

查看:68
本文介绍了Django ModelFormset验证错误的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

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

I'm getting a Validation Error: ['ManagementForm data is missing or has been tampered with']

当尝试提交modelformset表单时,我似乎无法弄清为什么会发生这种情况.

When attempting to submit a modelformset form, however I cannot seem to work out why this is occuring.

代码:

-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')

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

As you can see, I have the management form in my template so not sure what is causing this error. It only happens when I attempt to submit the formset.

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

The error seems to occur on the line in views - if formset.is_valid():

推荐答案

问题是您对GET和POST请求使用了不同的前缀.提交表单时,管理表单数据将被忽略,因为其前缀错误,因此您将获得 ManagementForm数据丢失或已被篡改错误.

The problem is that you have used a different prefix for GET and POST requests. When you submit the form, the management form data is ignored because it has the wrong prefix, so you get the ManagementForm data is missing or has been tampered with error.

这篇关于Django ModelFormset验证错误的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆