【问题标题】:Management form error while using modelformsets ('ManagementForm data is missing or has been tampered with')使用模型表单集时管理表单错误('ManagementForm 数据丢失或已被篡改')
【发布时间】:2010-07-10 18:43:37
【问题描述】:

我有一个 models.py 类如下

class Educational_Qualification(models.Model):
   user = models.ForeignKey(User)
   exam = models.CharField(max_length=40)
   pass_month = models.CharField(max_length=40)

我有一个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)) 

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

我的模板中有 formset.management_form。

可能是什么问题?

【问题讨论】:

    标签: python django django-forms


    【解决方案1】:

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

    渲染表单集的正确方法是:

    <form method="post" action="">
        <table>
            {{ formset }}
        </table>
    </form>
    

    <form method="post" action="">
        {{ formset.management_form }}
        <table>
            {% for form in formset.forms %}
                {{ form }}
            {% endfor %}
        </table>
    </form>
    

    我猜,您是在循环模板中的表单而不包括管理表单?

    【讨论】:

    • 谢谢,这确实解决了我的问题!
    【解决方案2】:

    如果涉及多个视图并且其中一个不知道表单集前缀,也会发生这种情况。

    获取视图:

    def someview(request):
    ...
        formset = Formset(prefix="foo")
    ...
    

    发布视图(可能是 Ajax 表单提交处理程序):

    def ajaxview(request):
    ...
        formset = Formset(request.POST, prefix="foo")  # here
    ...
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2013-08-04
      • 1970-01-01
      • 2019-01-06
      • 2014-10-09
      • 1970-01-01
      • 2014-12-28
      相关资源
      最近更新 更多