Django / Python中查询集计数的订单列表

时间:2011-02-27 01:34:28

标签: python django

对不起,这是基本的,但我是Python和Django的新手。

我有一个已执行保存在单独表格中的操作的用户列表。我想显示这些用户的列表,按照他们采取其他操作的次数排序。

我理解如何获得计数:

users = User.objects.all()
for user in users:
    print user.action_set.count()

我了解如何在模板中显示计数:

{% for user in users %}
    {{ user.action_set.count }}
{% endfor %}

但是我不确定如何根据动作集的计数对用户进行排序。

1 个答案:

答案 0 :(得分:4)

注释/聚合 http://docs.djangoproject.com/en/dev/topics/db/aggregation/

from django.db.models import Count
users = User.objects.annotate(action_count=Count('action')).order_by('action_count')
# note that this also saves your extra query PER user object.

{% for user in users %}
   {{ user.action_count }}
{% endfor %}

为了将来参考,如果您无法按数据库排序,您可以对任何列表进行python排序......

my_list.sort(key=lambda x: x[2])

my_list.sort(key=lambda x: x.method())

非常有用。