No aplicativo de administração do Django, você pode facilmente alterar quais colunas aparecem para a visualização de lista de um determinado modelo. Por exemplo, se eu tiver um modelo “Gerente” e quiser exibir o número de subordinados em seu item de linha no administrador, isso é fácil, supondo que o modelo tenha um método para contar subordinados (diremos que sim ):Manager.underlings_count()
class ManagerAdmin(admin.ModelAdmin):
list_display = ('__unicode__', 'underlings_count')
Mas e se eu não quiser que o cabeçalho da coluna seja chamado de ‘Contagem de subordinados’? O nome é muito descritivo e bom em código, mas em admin ‘contagem’ é apenas espaço perdido – se você estiver olhando para uma lista de números, obviamente é uma contagem.
A solução alternativa para alterá-lo é super simples:
class ManagerAdmin(admin.ModelAdmin):
list_display = ('__unicode__', 'underlings')
def underlings(self, obj):
# in this context, obj is the Manager instance for this line item
return obj.underlings_count()
Estrondo. Coluna renomeada apenas definindo uma função proxy.