在我的模型中设置extra = 1
始终显示1个空字段。插入新项目时可以,但我不想在编辑时显示额外的空白字段。我怎样才能做到这一点?
假设我们的模型是这样的:
class Foo(models.Model):
bar = models.ForeignKey(Bar, models.CASCADE, related_name='bars')
title = models.CharField(_('Title'), max_length=255)
body = models.TextField(_('Body'))
__str__(self):
return '%s' % (self.title)
,
class FooInline(admin.StackedInline):
model = Foo
extra = 1 #Also shows 1 extra empty field while editing.
#I don't want to show if there is already a non-empty field
class FooAdmin(admin.ModelAdmin):
prepopulated_fields = {'slug': ('title',)}
inlines = [
FooInline
]
答案 0 :(得分:5)
重写get_extra方法,而不是为额外的类成员设置值。
返回要使用的额外内联表单的数量。默认情况下,返回 InlineModelAdmin.extra属性。
重写此方法以编程方式确定额外的数量 内联表格。例如,这可以基于模型实例 (作为关键字参数obj传递):
类似的东西:
def get_extra(self, request, obj=None, **kwargs):
if obj.bar_set.count() :
return 0
else:
return 1