I am trying to figure out a way to display the next RelativeInline only if Person.is_member is True.
Current 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)
The only hint I could find was that I could override get_formset, but I could not find a good example, so my weak attempt did not work.
Here is my unsuccessful attempt:
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)
There are no errors generated by this code, but the inline string is not displayed regardless of whether Person.is_member is True or False.
Update: A friend suggested I try:
inlines = [RelativeInline,]
in
self.inlines = [RelativeInline,]
but to no avail. I also tried:
PersonAdmin.inlines = [RelativeInline,]
but the result was the same - no error, no built-in.