Я пытаюсь выяснить способ отображения следующей RelativeInline, только если Person.is_member имеет значение True.Условный встроенный администратор Django?
Текущий 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 является истинным или ложным.
Update: Друг предложил мне попробовать изменения:
inlines = [RelativeInline,]
к:
self.inlines = [RelativeInline,]
, но безрезультатно. Я также пробовал:
PersonAdmin.inlines = [RelativeInline,]
но результат был тот же - без ошибок, нет встроенного.
обновление для 2014 и Джанго 1.6: 'для встроенного в self.get_inline_instances (запрос, объект):' – imposeren