Я пытаюсь найти способ отображения следующего RelativeInline, только если Person.is_member значение True.
Текущий 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 Истинным или Ложным.
Обновление: друг предложил мне попробовать изменить:
inlines = [RelativeInline,]
на:
self.inlines = [RelativeInline,]
, но безрезультатно.Я также пытался:
PersonAdmin.inlines = [RelativeInline,]
, но результат был тот же - без ошибок, без встроенных.