Django 的内联表单

Posted

技术标签:

【中文标题】Django 的内联表单【英文标题】:Django's Inline Forms 【发布时间】:2011-06-12 15:38:29 【问题描述】:

我正在尝试使用内联 formSet 创建记录,同时使用普通表单创建记录,其主键 内联 formSet 的外键都在同一个 html 页面上。

有意义吗?这就是我的意思:假设我有以下两个模型(显然不是真正的代码,但你明白了):

Class mainModel
    Primary Key (custom pk I create)
    field1
    field2

Class inlineFormModel
    autoPK
    field1 = ForeignKey(mainModel)
    field2

现在,我想为用户创建一个 HTML 页面,以便他们可以在创建多个 inlineFormModel 实例的同时创建一个 mainModel 实例。 mainModel 将是普通表单,而 inlineFormModel 将使用 inlineFormsets。问题是,当我保存所有表单时,没有 foreignKey 链接到内联 formSet 记录,因为它引用的模型仍在创建中(所有内容都保存在同一个视图中)。这有意义吗?

我将如何使用多个 secondModel 实例创建一个新的 mainModel 实例并使用相同的视图函数保存整个批次?

谢谢!

【问题讨论】:

【参考方案1】:

这是一种常见的情况,我不知道为什么文档中没有解决:

    initial_form = mainModelForm(request.POST)
    if initial_form.is_valid():
        form= initial_form.save(commit=False)
        my_formset = inline_formset(request.POST,instance=form)
        if my_formset.is_valid():
           form.save()
           my_formset.save()
.......  .........
# return codes here

【讨论】:

如果我有 3 个 inline_formset,它们都具有与外键相同的 initial_form 的 PK,这有关系吗? 所以在这种情况下,初始表单和表单集都呈现在同一个
中,以便两者的所有数据都在请求中提交和定义?

以上是关于Django 的内联表单的主要内容,如果未能解决你的问题,请参考以下文章

Django内联表单集错误

Django 的内联表单

如何在 Django 的表单中拥有嵌套的内联表单集?

python Django:验证主要表单中的内联表单

Django:如何显示内联表单集中每个模型对象的表单错误

如何从 django 中的内联表单接收上传的文件?