# admin.py
class CustomerAdmin(admin.ModelAdmin):
list_display = ('foo', 'number_of_orders')
# models.py
class Order(models.Model):
bar = models.CharField[...]
customer = models.ForeignKey(Customer)
class Customer(models.Model):
foo = models.CharField[...]
def number_of_orders(self):
return u'%s' % Order.objects.filter(customer=self).count()
Come avrei potuto ordinare I clienti, a seconda number_of_orders
hanno?Django admin: come ordinare da uno dei campi list_display personalizzati che non ha alcun campo del database
admin_order_field
La proprietà non può essere utilizzata qui poiché richiede un campo di database su cui ordinare. È possibile, come Django si basa sul DB sottostante per eseguire l'ordinamento? Creare un campo aggregato per contenere il numero di ordini sembra un overkill qui.
La cosa divertente: se si modifica l'url a mano nel browser per ordinare su questa colonna, funziona come previsto!
"La cosa divertente: se si modifica l'url a mano nel browser per ordinare su questa colonna, funziona come previsto!" Intendi:/admin/myapp/cliente /? Ot = asc & o = 2 Sei sicuro? –
sì, sia asc che dsc. Forse funziona solo con decimali. –
Non penso che funzionerebbe con più pagine. –