django - 在 Django 内联表单集中,initial 和 extra 有何关系?

标签 django inline-formset

Django 文档说“如上所示,您可以定义额外表单的数量。这意味着您告诉表单集除了它生成的表单数量之外还要显示多少额外表单初始数据。” 来源here .

但是,(至少)对于内联表单集,情况似乎并非如此。看起来 extra 参数决定了表单的总数。如果我写 extra=0 ,我将根本没有任何表单可以显示,如果我写 extra=1 ,我只会得到第一个,依此类推。看起来你必须额外设置初始数据的长度(不是很干燥,是吗?)

人们做同样事情的一些例子(extra=len(myinitial)):

问题是:我是否遗漏了文档中的任何内容,或者为什么这有意义?

注意。我不包括源代码,因为我正在使用 django-extra-views 进行开发,这增加了示例代码的复杂性。尽管如此,周围的几个例子似乎都指向同一件事。 (不过,我不确定我对以前的项目做了什么,但我认为我在使用普通内联表单集时遇到了同样的问题)。

最佳答案

来自关于 model formsets 的 Django 文档(和内联表单集):

As with regular formsets, it’s possible to specify initial data for forms in the formset by specifying an initial parameter when instantiating the model formset class returned by modelformset_factory. However, with model formsets, the initial values only apply to extra forms, those that aren’t bound to an existing object instance.

我注意到同样的行为,至少对于 Django 1.4 和使用模型表单集来说是这样。我认为文档需要改进。

另外,我发现了这个相关的错误 here

关于django - 在 Django 内联表单集中,initial 和 extra 有何关系?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25046436/

相关文章:

javascript - 动态过滤django表单中的内容

python - Django-CMS 插件未显示在可用插件中

python - clean_data 在 Django 1.11 中消失在哪里?

django - 对django外键,manytomanyfield,inlineformset_factories感到困惑

django - 使用内联表单集进行Django表单验证

python - 在非父模型的内联表单集中更改模型字段的查询集

javascript - bootbox 确认 - 选择“确定”时包括 href

python - 如何仅当某个字段为 True 时才渲染 View ? - Django

javascript - 如何在不重新加载页面的情况下更新 Django 页面?

django - 在基于Django类的 View (CBV)中保存inlineformset