Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/304.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python Django ManagementForm数据缺失或已被篡改_Python_Django - Fatal编程技术网

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请求上都会收到错误消息吗?完整的回溯可能会有所帮助。我想你需要解决我提到的其他问题。今晚我帮不了你了。希望你能成功。是锻炼和锻炼的实例还是模型?我也有同样的问题@阿拉斯代尔,一个新的模型实例和相关对象的表单怎么样?你是否显示了正确的模板?似乎没有“提交”按钮。请检查模板中的表单集名称是否有拼写错误