Python django中一个视图中的两个modelformset

Python django中一个视图中的两个modelformset,python,html,django,django-forms,formset,Python,Html,Django,Django Forms,Formset,我是django的新手,我尝试在一个视图中使用两个modelformset,但我得到了“ManagementForm数据丢失或被篡改”错误。我已经检查了,我知道我必须使用management_formset标记和前缀,但仍然有错误 我一直在寻找答案,但我无法修复这个错误 只有一个表单集,所有表单都可以正常工作 视图.py def soil_page(request): SoilFormSet = modelformset_factory(model=Soil,exclude=False,

我是django的新手,我尝试在一个视图中使用两个modelformset,但我得到了“ManagementForm数据丢失或被篡改”错误。我已经检查了,我知道我必须使用management_formset标记和前缀,但仍然有错误

我一直在寻找答案,但我无法修复这个错误

只有一个表单集,所有表单都可以正常工作

视图.py

def soil_page(request):
    SoilFormSet = modelformset_factory(model=Soil,exclude=False,min_num=1,extra=0)
    CMCFormSet = modelformset_factory(model=CMC,exclude=False,max_num=1)

    if request.method == "POST":
        formset = SoilFormSet(request.POST or None, request.FILES or None, prefix='soils')
        cmcform = CMCFormSet(request.POST or None,request.FILES or None, prefix='cmcs')

        if formset.is_valid():
            formset.save()

        if cmcform.is_valid():
            cmcform.save()

    else:
        formset = SoilFormSet(prefix='soils')
        cmcform = CMCFormSet(prefix='cmcs')

    return render(request,'soil/soil_form.html',{'formset':formset,
                                                    'cmcform':cmcform,})
HTML


{%csrf_令牌%}
{{formset.management_form}
{{formset.as_p}}
{%csrf_令牌%}
{{cmcform.management_form}}
{{cmcform.as_p}}

我希望你能帮助我。谢谢。

我找到了答案

首先,似乎要让管理表单工作,它需要在同一个表单标签下。具体如下:

<div class="container">
  <form method="post">
    {% csrf_token %}
      {{ formset.management_form }}
      <table>
          {% for form in formset %}
          {{ form }}
          {% endfor %}
      </table>
      <input type="submit" name="soil_button"/>

      {{ cmcformset.management_form }}
      <table>
          {% for form in cmcformset %}
          {{ form }}
          {% endfor %}
      </table>
      <input type="submit" name="cmc_button"/>
  </form>
</div>
我希望这个解决方案能帮助其他人

<div class="container">
  <form method="post">
    {% csrf_token %}
      {{ formset.management_form }}
      <table>
          {% for form in formset %}
          {{ form }}
          {% endfor %}
      </table>
      <input type="submit" name="soil_button"/>

      {{ cmcformset.management_form }}
      <table>
          {% for form in cmcformset %}
          {{ form }}
          {% endfor %}
      </table>
      <input type="submit" name="cmc_button"/>
  </form>
</div>
if formset.is_valid() and 'soil_button' in request.POST:
    formset.save()

if cmcformset.is_valid() and 'cmc_button' in request.POST:
    cmcformset.save()