我可以在 django 中的单个表单中使用多个表单集,如果可以的话如何?

Posted

技术标签:

【中文标题】我可以在 django 中的单个表单中使用多个表单集,如果可以的话如何?【英文标题】:Can I use multiple number of formset in a single form in django,if yes how? 【发布时间】:2012-07-04 16:48:15 【问题描述】:

我必须制作一个使用多个表单集的表单。请告诉我这是否可能。如果是,那怎么办?

【问题讨论】:

【参考方案1】:

您可以在表单中添加任意数量的表单集。只需在视图中创建/初始化它们并传递给模板以在表单中呈现。

类似:

 formset1.management_form 
% for form in formset1 %
     form 
% endfor %

 formset2.management_form 
% for form in formset2 %
     form 
% endfor %

您在一个视图中使用多个表单集,您需要为表单使用前缀,如此处所述Using more than one formset in a view 简而言之:

article_formset = ArticleFormSet(prefix='articles')
book_formset = BookFormSet(prefix='books')

【讨论】:

这不能正常工作。由于两个表单集的管理表单相同,因此无法在模板中区分 formset1.management_form 和 formset2.management_form。管理表单实际上包含3个隐藏输入字段: 这些对于所有表单集都是相同的。我想知道为什么 django 不区分这些。 @tejinderss,在视图中创建表单集时需要使用前缀,参考docs.djangoproject.com/en/dev/topics/forms/formsets/… 此答案不包括即将使用相同型号或形式的情况;例如,如果我们想在单个视图中使用 formset 的 formset。【参考方案2】:

添加prefix='article'的时候需要考虑到formset的id会发生变化,还有其他的变化类似

<label for="id_form-0-title">Title:</label> 

<label for="id_article-0-title">Title:</label>

【讨论】:

以上是关于我可以在 django 中的单个表单中使用多个表单集,如果可以的话如何?的主要内容,如果未能解决你的问题,请参考以下文章

django:csrf_token 用于单个页面上的多个表单和 ajax 请求

在 django 中处理单个 html 表单的多个输入值

Django 表单:查询结果定义的字段,单个视图同时更新多个对象

Django如何为多个表单创建一个帖子请求。

Django之路——form modelform formset modelformset的各种用法

如何在django中为问题添加多个表单字段类型的选项?