我可以在 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 表单:查询结果定义的字段,单个视图同时更新多个对象