Django 文档说“如上所示,您可以定义额外表单的数量。这意味着您告诉表单集除了它生成的表单数量之外还要显示多少额外表单初始数据。” 来源here .
但是,(至少)对于内联表单集,情况似乎并非如此。看起来 extra
参数决定了表单的总数。如果我写 extra=0
,我将根本没有任何表单可以显示,如果我写 extra=1
,我只会得到第一个,依此类推。看起来你必须额外设置初始数据的长度(不是很干燥,是吗?)
人们做同样事情的一些例子(extra=len(myinitial)
):
- Different initial data for each form in a Django formset
- formset and input text for each foreign key
- Initial Data for Django Inline Formsets
问题是:我是否遗漏了文档中的任何内容,或者为什么这有意义?
注意。我不包括源代码,因为我正在使用 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/