# 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 posso ordinare i clienti, a seconda di quelli number_of_orders
che hanno?
admin_order_field
la proprietà non può essere utilizzata qui, poiché richiede un campo del database per l'ordinamento. È possibile, dato che Django si affida al DB sottostante per eseguire l'ordinamento? La creazione di un campo aggregato per contenere il numero di ordini sembra eccessivo qui.
La cosa divertente: se cambi l'URL a mano nel browser per ordinare su questa colonna, funziona come previsto!