使用modelformsets时管理表单错误('ManagementForm数据丢失或被篡改')

ram*_*daz 6 python django django-forms

我有一个models.py类,如下所示

class Educational_Qualification(models.Model):
   user = models.ForeignKey(User)
   exam = models.CharField(max_length=40)
   pass_month = models.CharField(max_length=40)
Run Code Online (Sandbox Code Playgroud)

我有一个views.py如下

def create_qualification(request):
 QFormSet = modelformset_factory(Educational_Qualification, extra=3, exclude=("user",))
 if request.method == "POST":
  formset = QFormSet(request.POST, request.FILES)

  if formset.is_valid():
   formset.save()
   for form in formset.forms:
    if form.is_valid():
     quali= form.save(commit=False)
     quali.user = request.user
     quali.save()

    return HttpResponse("Saved")
  else:
   return HttpResponse("Snafu")
 else:
  formset = QFormSet()
 return render_to_response("register/edu.html", {"formset":formset}, context_instance=RequestContext(request)) 
Run Code Online (Sandbox Code Playgroud)

当我提交表单时,它会抛出验证错误.声明ManagementForm数据丢失或已被篡改'

我的模板中有formset.management_form.

可能是什么问题?

Lak*_*sad 24

错误不在您的视图或模型中,而是在模板中.

呈现formset的正确方法是:

<form method="post" action="">
    <table>
        {{ formset }}
    </table>
</form>
Run Code Online (Sandbox Code Playgroud)

要么

<form method="post" action="">
    {{ formset.management_form }}
    <table>
        {% for form in formset.forms %}
            {{ form }}
        {% endfor %}
    </table>
</form>
Run Code Online (Sandbox Code Playgroud)

我想,你是在循环模板中的表格而不包括管理表格?