我在视图中提交theFunctionIWantToTest
时遇到问题。出于某种原因,无论我将实际数据设置为什么,formset都不符合is_valid标准。
以下是该观点的相关部分:
modelformset
每次我提交表单集时,都会收到问题消息,指出表单集无效,我不知道原因。
以下是模板中的表单标记:
def admin_tools(request):
ElectionFormSet = modelformset_factory(Election, exclude=('Complete',), formset=BaseElectionFormSet, extra=0)
if request.method == 'POST':
if 'edit_elections' in request.POST:
election_formset = ElectionFormSet(request.POST)
# print(formset)
if election_formset.is_valid():
election_formset.save()
messages.add_message(request, messages.SUCCESS, 'Election settings saved')
return redirect(reverse('elections:home'))
else:
messages.add_message(request, messages.ERROR, 'Problem')
return redirect(reverse('elections:home'))
else:
election_formset = ElectionFormSet()
return render(request, 'admin/admin_tools.html',{
'formset': election_formset,
})
我不确定这里会出现什么错误。我的想法是,每个表格应该单独提交而不是整个表格?我也不确定我的csrf令牌是否在正确的位置。
如何让我的formset正确提交?
答案 0 :(得分:0)
当formset无效时,您通常不会重定向。这允许您重新显示formset以及错误。
在您的情况下,您手动渲染formset,因此您不会显示任何错误。您可以从最简单的模板开始。
<form method="post" action="">
<table>
{{ formset }}
</table>
</form>
一旦您对该视图的工作感到满意,您就可以更多地自定义模板。有关详细信息,请参阅using formsets in templates上的文档。
如果您确实希望在formset无效时重定向,可以在视图中检查formset.errors
,以调试问题。