【问题标题】:Django one-to-many formsDjango 一对多表单
【发布时间】:2012-03-06 15:11:51
【问题描述】:

假设我有两个模型:A 和 B。A 与 B 具有一对多的关系,即 A 可以有多个 B。如果我正确配置管理员,我可以看到属于 A 的 B 并动态添加它们,而无需刷新网站。我有一个“添加更多”按钮,我可以在某个 A 中创建许多 B。现在我正在寻找使用标准视图和模板做同样事情的示例。有什么建议吗?

【问题讨论】:

  • 嗯...django admin source 可能是一个开始的地方。但是你要问的不是微不足道的,你最终会写出一大段代码。

标签: python django django-forms


【解决方案1】:

正如其他人指出的那样,您需要为您的视图创建一个内联表单集。 admin 中使用的 JS 基于这个项目:https://github.com/elo80ka/django-dynamic-formset。它最近没有看到很多更新,但这里有一些示例和一些使用文档:https://github.com/elo80ka/django-dynamic-formset/blob/master/docs/usage.rst

【讨论】:

    【解决方案2】:

    管理员对内联所做的工作并没有什么特别之处(您从另一个模型的更改形式编辑的模型)。它只是使用 Django 的 formsets 和一些 javascript 来复制实际的 HTML 表单。 Django 的表单集是为处理不明确的表单而构建的,所以这就是它的全部内容。

    【讨论】:

      【解决方案3】:

      使用inline formset,并可能为“添加更多”按钮使用一点 JavaScript。

      【讨论】: