Python Django ManagementForm数据缺失或已被篡改
我不断得到错误:Python Django ManagementForm数据缺失或已被篡改,python,django,Python,Django,我不断得到错误: [u'ManagementForm data is missing or has been tampered with'] 我也不明白为什么。以下是我的看法: def CreateWorkout(request): WorkoutInlineFormSet = inlineformset_factory(workout,exercise) if request.method == "POST" : formset = WorkoutIn
[u'ManagementForm data is missing or has been tampered with']
我也不明白为什么。以下是我的看法:
def CreateWorkout(request):
WorkoutInlineFormSet = inlineformset_factory(workout,exercise)
if request.method == "POST" :
formset = WorkoutInlineFormSet(request.POST)
if formset.is_valid():
formset.save();
else:
formset = WorkoutInlineFormSet()
return render_to_response('submit.html',{'formset': formset},context_instance=RequestContext(request))
这是我的模板:
<body>
<form method="POST" action ="">
{{ formset.management_form }}
<table>
{% for form in formset.forms %}
{{ form }}
{% endfor %}
</table>
</form>
</body>
{{formset.management_form}
{formset.forms%%中表单的%
{{form}}
{%endfor%}
我已经读到您必须包含
表单集.management\u表单
,我已经读到了。我认为这是一个很容易解决的问题,但我还没有找到问题所在。当您使用内联表单集时,需要提供与对象相关的实例
# First, fetch the instance from the db
workout = code_that_fetches_instance()
if request.method == "POST" :
formset = WorkoutInlineFormSet(request.POST, instance=workout)
...
else:
formset = WorkoutInlineFormSet(instance=workout)
有关更多信息,请参阅上的文档中的示例
如果
workout
和exercise
是您的模型,您应该遵循python惯例,将它们重命名为workout
和exercise
。小写的workout
应该是表单集中所有练习都链接到的实例。我遇到了这个问题
原因是您的POST
数据中没有类似form-TOTAL\u表单、form-INITIAL\u表单和form-MAX\u NUM\u表单的内容
您应该使用{{formset.as_p}
,这将从表单集中呈现管理表单数据。如果要进行自定义表单集呈现,则不应忘记表单集的管理表单,以使POST数据与管理表单数据保持一致。更改此设置:
formset = WorkoutInlineFormSet(request.POST)
为此:
formset = WorkoutInlineFormSet(request.POST or None, request.FILES or None)
还是一样的错误。在声明request.method==“POST”下的表单集时出错。在进行更改后,是否重新加载代码并在再次提交之前发出新的get请求?当您使用我建议的更改发出get请求时,请使用html输出更新您的问题。您尚未包含我要求的html输出。我已经更新了答案,并提供了一些建议。您在提交表单时以及在get请求上都会收到错误消息吗?完整的回溯可能会有所帮助。我想你需要解决我提到的其他问题。今晚我帮不了你了。希望你能成功。是锻炼和锻炼的实例还是模型?我也有同样的问题@阿拉斯代尔,一个新的模型实例和相关对象的表单怎么样?你是否显示了正确的模板?似乎没有“提交”按钮。请检查模板中的表单集名称是否有拼写错误