Sto cercando di capire un modo per visualizzare il seguente RelativeInline solo se Person.is_member è True.In linea condizionale nell'amministratore di Django?
admin.py attuale:
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)
L'unico suggerimento che ho potuto trovare è che potrei essere in grado di ignorare get_formset, ma non riuscivo a trovare un buon esempio, quindi il mio debole tentativo non ha funzionato
Ecco il mio tentativo fallito:
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)
ci sono errori generati da questo codice, ma non in linea appare a prescindere dal fatto che Person.is_member è vera o falsa.
Aggiornamento: Un amico mi ha suggerito di provare a cambiare:
inlines = [RelativeInline,]
a:
self.inlines = [RelativeInline,]
ma senza alcun risultato. Ho anche provato:
PersonAdmin.inlines = [RelativeInline,]
ma il risultato è stato lo stesso: nessun errore, nessun inline.
aggiornamento per il 2014 e il Django 1.6: 'per inline in self.get_inline_instances (richiesta, obj):' – imposeren