Basta fazer uma def no models.py como abaixo e depois colocá-la no list_display do admin.py:
def qtde_fotos(self): return self.foto_set.all().count()
Mas e se, quiséssemos ordenar no admin por este valor? Saber em ordem quais os cadastros que mais enviaram fotos? Por ser uma def, o django não ordena automaticamente. Pra isso temos que fazer alguns ajustes. Primeiro de tudo, apague esta def do seu model caso tenha feito.
No admin de seu model no arquivo admin.py, deixe como abaixo:
def queryset(self, request): qs = super(CadastroAdmin, self).queryset(request) qs = qs.annotate(qtde=Count('foto')) return qs def qtde_fotos(self, inst): return inst.qtde qtde_fotos.admin_order_field = 'qtde'
depois basta adicionar a def qtde_fotos no list_display.
hasta!
Nenhum comentário:
Postar um comentário