Django ModelFormSet无法正确提交

时间:2018-02-27 17:22:00

标签: python django django-forms

我在视图中提交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正确提交?

1 个答案:

答案 0 :(得分:0)

当formset无效时,您通常不会重定向。这允许您重新显示formset以及错误。

在您的情况下,您手动渲染formset,因此您不会显示任何错误。您可以从最简单的模板开始。

<form method="post" action="">
    <table>
        {{ formset }}
    </table>
</form>

一旦您对该视图的工作感到满意,您就可以更多地自定义模板。有关详细信息,请参阅using formsets in templates上的文档。

如果您确实希望在formset无效时重定向,可以在视图中检查formset.errors,以调试问题。