【发布时间】:2011-03-08 18:05:08
【问题描述】:
我试图找出一种仅在 Person.is_member 为 True 时才显示以下 RelativeInline 的方法。
当前 admin.py:
class RelativeInline(admin.TabularInline):
model = Relative
fk_name = 'member'
class PersonAdmin(admin.ModelAdmin):
inlines = [RelativeInline,]
ordering = ('first_name',)
list_filter = ('is_member',)
search_fields = ('first_name', 'last_name',)
date_hierarchy = 'member_date'
list_display = ('first_name', 'last_name', 'is_member', 'member_date', 'photo')
admin.site.register(Person, PersonAdmin)
我能找到的唯一提示是我可能能够覆盖 get_formset,但我找不到一个好的例子,所以我微弱的尝试没有奏效。
这是我失败的尝试:
class RelativeInline(admin.TabularInline):
model = Relative
fk_name = 'member'
class PersonAdmin(admin.ModelAdmin):
ordering = ('first_name',)
list_filter = ('is_member',)
search_fields = ('first_name', 'last_name',)
date_hierarchy = 'member_date'
list_display = ('first_name', 'last_name', 'is_member', 'member_date', 'photo')
def get_formset(self, request, obj=None, **kwargs):
if obj.is_member:
inlines = [RelativeInline,]
return super(PersonAdmin, self).get_formset(request, obj, **kwargs)
admin.site.register(Person, PersonAdmin)
这段代码没有产生错误,但无论 Person.is_member 是 True 还是 False,都不会出现内联。
更新: 一位朋友建议我尝试改变:
inlines = [RelativeInline,]
到:
self.inlines = [RelativeInline,]
但无济于事。我也试过了:
PersonAdmin.inlines = [RelativeInline,]
但结果是一样的——没有错误,没有内联。
【问题讨论】:
标签: django django-admin conditional inline