我尚未对此进行测试(我想知道它是否有效),但是如何定义一个自定义管理器,Customer其中包括汇总的订单数,然后设置admin_order_field为该汇总,即
from django.db import models
class CustomerManager(models.Manager):
def get_query_set(self):
return super(CustomerManager, self).get_query_set().annotate(models.Count('order'))
class Customer(models.Model):
foo = models.CharField[...]
objects = CustomerManager()
def number_of_orders(self):
return u'%s' % Order.objects.filter(customer=self).count()
number_of_orders.admin_order_field = 'order__count'
编辑:我刚刚测试了这个想法,它完美地工作-不需要django admin子类化!