【发布时间】:2011-01-11 05:27:10
【问题描述】:
# 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()
如何根据客户拥有的number_of_orders 对客户进行排序?
admin_order_field 属性不能在这里使用,因为它需要一个数据库字段来排序。有可能吗,因为 Django 依赖于底层数据库来执行排序?在这里创建一个聚合字段来包含订单数量似乎有点过头了。
有趣的是:如果您在浏览器中手动更改 url 以在此列上排序 - 它会按预期工作!
【问题讨论】:
-
"有趣的是:如果您在浏览器中手动更改 url 以在此列上排序 - 它会按预期工作!"你的意思是:/admin/myapp/customer/?ot=asc&o=2 你确定吗?
-
是的,asc 和 dsc 都有。也许它只适用于小数。
-
我认为它不适用于多个页面。
标签: django sorting django-admin