Django文档说"如上所示,您可以定义额外表单的数量。这意味着您要告诉formset除了从初始数据生成的表单数量之外还要显示多少其他表单。" 来源here。
然而,(至少)使用内联表单集,似乎并非如此。看起来extra
参数确定了表单的总数。如果我写extra=0
我根本没有任何表格可以显示,extra=1
我只会得到第一个,依此类推。好像你必须设置额外的初始数据的长度(不是很干,是吗?)
人们做同样事情的一些例子(extra=len(myinitial)
):
问题是:我是否遗漏了文档中的任何内容或为什么这有意义?
请注意。我没有包含源代码,因为我使用django-extra-views进行开发会增加示例代码的复杂性。尽管如此,周围的几个例子似乎指向同一件事。 (我不确定我以前的项目做了什么,但我认为我遇到了与普通内联表单集相同的问题。)
答案 0 :(得分:1)
关于model formsets(和内联表单集)的Django文档:
与常规表单集一样,通过在实例化modelformset_factory返回的模型formset类时指定初始参数,可以为表单集中的表单指定初始数据。但是,对于模型表单集,初始值仅适用于额外的表单,即未绑定到现有对象实例的表单。
我注意到了相同的行为,至少对于Django 1.4和使用模型表单集。我认为文档需要改进。
另外,我发现了这个相关的错误here。
答案 1 :(得分:0)
extra
在此结构中很有用(放入admin.py
中)
from django.contrib import admin
from guardian.models import UserObjectPermission
class InlineUserObjectPermission(admin.TabularInline):
model = UserObjectPermission
extra = 0
_inlines_ = [ InlineUserObjectPermission ]
class MyUserAdmin(UserAdmin):
model = MyUser
inlines = _inlines_
admin.site.register(MyUser, MyUserAdmin)
有了这个,对于Django管理页面中的任何MyUser
页面,您都会在页面底部看到与该用户相关联的UserObjectPermission
,以及一些额外的空行如果愿意,可以编译;
extra
控制将有多少多余的行为空。