Django内联表单集仅保存三个对象

2024-10-08 19:18:54 发布

您现在位置:Python中文网/ 问答频道 /正文

我有一个question对象,它有一个discussion对象的外键字段。我尝试使用讨论模型表单和问题内联表单集呈现表单。当它向页面呈现一个空表单时,一切正常,所有字段都在需要的位置。错误是,我有JQuery,它允许用户添加更多的问题,如果他们愿意的话,可以在其他问题输入和标签上附加完全相同的html,并使用适当的名称值。它最初只为问题设置了三个空白文本区域。在我的视图函数中,我用请求.POST数据。我可以在帖子中看到,所有的数据,甚至是添加的问题都在那里,但是当我将它们重定向到一个页面以查看新讨论对象及其相关字段的只读版本时,总是只有三个问题,而不是4+。在

视图

def new_discussion(request):
    member = get_member(request)

if request.method == 'POST':
    form = DiscussionForm(data=request.POST)
    QuestionInlineFormSet = inlineformset_factory(Discussion, Question, fields='__all__')

    if form.is_valid():

       created_discussion = form.save(commit=False)
       formset = QuestionInlineFormSet(request.POST, instance=created_discussion)
       if formset.is_valid():
            created_discussion.community = member.community
            created_discussion.save()
            formset.save()

            return HttpResponseRedirect('/user/discussions/')

模板

^{pr2}$

Tags: 数据对象form视图表单ifrequestsave
1条回答
网友
1楼 · 发布于 2024-10-08 19:18:54

您需要更新管理表单中指定表单总数的隐藏字段。每次添加表单时都需要更新它。您可以使用以下id将其作为目标:

id_form-TOTAL_FORMS

目前,您的count变量是在页面加载时分配的(看起来是3个表单)。Django正在验证您的表单集,使其只接受指定数量的表单,因此将删除所有其他表单集表单。所以每次添加表单时,都需要将其递增1。在

以下是管理表单上的一些信息:https://docs.djangoproject.com/en/dev/topics/forms/formsets/#understanding-the-managementform

相关问题 更多 >

    热门问题