django - django错误管理表单丢失或被篡改
问题描述
我无法解决此错误:
ValidationError:ManagementForm 数据丢失或已被篡改
更新:如果我删除任何表单集(sr_formset、ttt_formset、gc_formset、pc_formset、gpm_formset)的注释,我会收到错误消息。我的观点:
def manage_score(request,pk):
ScoreFormSetSR = formset_factory(ScoreForm,min_num=12,max_num=12)
ScoreFormSetTTT = formset_factory(ScoreForm,min_num=12,max_num=12)
ScoreFormSetGC = formset_factory(ScoreForm,min_num=12,max_num=12)
ScoreFormSetPC = formset_factory(ScoreForm,min_num=6,max_num=6)
ScoreFormSetGPM = formset_factory(ScoreForm,min_num=6,max_num=6)
ScoreFormSetHC = formset_factory(ScoreForm,min_num=8,max_num=8)
ScoreFormSet1C = formset_factory(ScoreForm,min_num=8,max_num=8)
stage = DailyStage.objects.get(pk=pk)
if request.method == 'POST':
if stage.tipo=='SR':
formsetHC_list = []
formset1C_list = []
for n in range (stage.hc):
formsetHC_list.append(ScoreFormSetHC)
for k in range (stage.UNOc):
formset1C_list.append(ScoreFormSet1C)
#sr_formset = ScoreFormSetSR(request.POST, request.FILES, prefix='SR')
#gc_formset = ScoreFormSetGC(request.POST, request.FILES, prefix='GC')
#pc_formset = ScoreFormSetPC(request.POST, request.FILES, prefix='PC')
#gpm_formset = ScoreFormSetGPM(request.POST, request.FILES, prefix='GPM')
return render(request, 'game/score.html', {#'sr_formset': sr_formset,
#'gc_formset': gc_formset,
#'pc_formset': pc_formset,
#'gpm_formset': gpm_formset,
'formset1C_list':formset1C_list,
'formsetHC_list':formsetHC_list,
})
if stage.tipo=='TTT':
formsetHC_list = []
formset1C_list = []
for n in range (stage.hc):
formsetHC_list.append(ScoreFormSetHC)
for k in range (stage.UNOc):
formset1C_list.append(ScoreFormSet1C)
#ttt_formset = ScoreFormSetTTT(request.POST, request.FILES, prefix='TTT')
#gc_formset = ScoreFormSetGC(request.POST, request.FILES, prefix='GC')
#pc_formset = ScoreFormSetPC(request.POST, request.FILES, prefix='PC')
#gpm_formset = ScoreFormSetGPM(request.POST, request.FILES, prefix='GPM')
return render(request, 'game/score.html', {
#'ttt_formset': ttt_formset,
#'gc_formset': gc_formset,
#'pc_formset': pc_formset,
#'gpm_formset': gpm_formset,
'formset1C_list':formset1C_list,
'formsetHC_list':formsetHC_list
})
else:
print('----------------------------------------------------')
if stage.tipo=='SR':
print(stage.tipo)
formsetHC_list = []
formset1C_list = []
for n in range (stage.hc):
formsetHC_list.append(ScoreFormSetHC)
for k in range (stage.UNOc):
formset1C_list.append(ScoreFormSet1C)
sr_formset = ScoreFormSetSR(request.POST, request.FILES, prefix='SR')
#gc_formset = ScoreFormSetGC(request.POST)
#pc_formset = ScoreFormSetPC(request.POST, request.FILES, prefix='PC')
#gpm_formset = ScoreFormSetGPM(request.POST, request.FILES, prefix='GPM')
return render(request, 'game/score.html', {
#'sr_formset': sr_formset,
#'gc_formset': gc_formset,
#'pc_formset': pc_formset,
#'gpm_formset': gpm_formset,
'formset1C_list':formset1C_list,
'formsetHC_list':formsetHC_list,
#'sr_formset': sr_formset,
})
if stage.tipo=='TTT':
formsetHC_list = []
formset1C_list = []
for n in range (stage.hc):
formsetHC_list.append(ScoreFormSetHC)
for k in range (stage.UNOc):
formset1C_list.append(ScoreFormSet1C)
#ttt_formset = ScoreFormSetTTT(request.POST, request.FILES, prefix='TTT')
#gc_formset = ScoreFormSetGC(request.POST, request.FILES, prefix='GC')
#pc_formset = ScoreFormSetPC(request.POST, request.FILES, prefix='PC')
#gpm_formset = ScoreFormSetGPM(request.POST, request.FILES, prefix='GPM')
return render(request, 'game/score.html', {#'ttt_formset': ttt_formset,
#'gc_formset': gc_formset,
#'pc_formset': pc_formset,
#'gpm_formset': gpm_formset,
'formset1C_list':formset1C_list,
'formsetHC_list':formsetHC_list,
})
我的模板:
<h1>Score page</h1>
<form method="POST" >
{% csrf_token %}
<div style="border-style: solid;width:50%;float:left;">
<h3>FORMSET HC LIST</h3>
{% for hc_formset in formsetHC_list %}
{{ hc_formset.management_form }}
<h3>--------------</h3>
<table>
{% for form in hc_formset %}
{{ form }}
{% endfor %}
</table>
{% endfor %}
</div>
<div style="border-style: solid;width:50%;float:left;">
<h3>FORMSET 1C LIST</h3>
{% for unc_formset in formset1C_list %}
{{ unc_formset.management_form }}
<h3>--------------</h3>
<table>
{% for form in unc_formset %}
{{ form }}
{% endfor %}
</table>
{% endfor %}
</div>
<div style="border-style: solid;width:50%;float:left;">
<h3>SR CLASSIFICATION</h3>
{{ sr_formset.management_form }}
<table>
{% for form in sr_formset %}
{{ form }}
{% endfor %}
</table>
</div>
<div style="border-style: solid;width:50%;float:left;">
<h3>TTT CLASSIFICATION</h3>
{{ ttt_formset.management_form }}
<table>
{% for form in ttt_formset %}
{{ form }}
{% endfor %}
</table>
</div>
<div style="border-style: solid;width:50%;float:left;">
<h3>GENERAL CLASSIFICATION</h3>
{{ gc_formset.management_form }}
<table>
{% for form in gc_formset %}
{{ form }}
{% endfor %}
</table>
</div>
<div style="border-style: solid;width:50%;float:left;">
<h3>POINTS CLASSIFICATION</h3>
{{ pc_formset.management_form }}
<table>
{% for form in pc_formset %}
{{ form }}
{% endfor %}
</table>
</div>
<div style="border-style: solid;width:50%;float:left;">
<h3>GPM CLASSIFICATION</h3>
{{ gpm_formset.management_form }}
<table>
{% for form in gpm_formset %}
{{ form }}
{% endfor %}
</table>
</div>
这是traceback screenshot Traceback的截图
解决方案
即使您不打算使用该表单集,您也必须调用{{ <some_formset>.management_form }}
您传入模板的每个表单集。否则,这就是为什么它在错误中“丢失”。
推荐阅读
- javascript - SASS 部分导入在反应中不起作用
- python - Seaborn ValueError:“顶点”必须是形状为 Nx2 的 2D 列表或数组
- google-maps - Google Maps Android API:授权失败。确保启用了“Google Maps Android API v2”。确保以下 Android Key 存在
- python - Pygame:如何在按下键之前显示图像
- python - 如何让我的循环遍历我的列表?
- php - Symfony 3.4 处理多个输入问题
- reactjs - 在 Private Routes 中 React Rendering 两次
- python - 有没有办法将 multi_index 转换为 int 字符串/列表/数组?
- sql - ORACLE SQL 查询以两小时为基础获取间隔为 30 分钟的行
- php - PHP json_encode 2 数组