Estoy tratando de encontrar una manera de mostrar la siguiente RelativeInline solo si Person.is_member es True.Condicional en línea en Django admin?
admin.py actual:
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)
La única pista que he podido encontrar es que yo podría ser capaz de anular get_formset, pero no pude encontrar un buen ejemplo, así que mi débil intento no funcionó
Aquí está mi intento fallido:
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)
No hay errores generados por este código, pero no aparece ninguna línea, independientemente de si es o no Person.is_member es verdadera o falsa.
Actualización: Un amigo me sugirió que probar cambiando:
inlines = [RelativeInline,]
a:
self.inlines = [RelativeInline,]
pero fue en vano. También probé:
PersonAdmin.inlines = [RelativeInline,]
pero el resultado fue el mismo - sin error, sin línea.
actualización para 2014 y Django 1.6: ' de línea en self.get_inline_instances (solicitud, obj):' – imposeren