# 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()
Run Code Online (Sandbox Code Playgroud)
我如何根据客户的不同对客户进行排序number_of_orders?
admin_order_fieldproperty不能在这里使用,因为它需要一个数据库字段来进行排序.是否有可能,因为Django依赖底层数据库来执行排序?创建一个包含订单数量的聚合字段在这里看起来有点过分.
有趣的是:如果您在浏览器中手动更改URL以对此列进行排序 - 它按预期工作!
我有一个自定义list_display字段,它负责我的一个管理页面中的整数列.
我需要让工作人员按照它排序.
如果整数表示某个DB字段的计数/平均值/等等,那么如何实现该解决方案,这对我来说并非如此.
[该案例的解决方案在这里:Django admin:如何按没有数据库字段的自定义list_display字段之一进行排序 ]
任何想法如何实现这种排序,而不实际创建和维护值的数据库字段?