Python django中一个视图中的两个modelformset
我是django的新手,我尝试在一个视图中使用两个modelformset,但我得到了“ManagementForm数据丢失或被篡改”错误。我已经检查了,我知道我必须使用management_formset标记和前缀,但仍然有错误 我一直在寻找答案,但我无法修复这个错误 只有一个表单集,所有表单都可以正常工作 视图.pyPython 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,
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()