如何在django中查询为GROUP BY?

问题:

我查询一个模型,

Members.objects.all()

并回报说

Eric, Salesman, X-Shop
Freddie, Manager, X2-Shop
Teddy, Salesman, X2-Shop
Sean, Manager, X2-Shop

我想要的是,知道最好的Django的方式
一个group_by查询到我的数据库,就像,

Members.objects.all().group_by('designation')

当然不行。
我知道我们可以在“django / db / models / query.py”上做一些技巧,
但我只是好奇地知道如何做到没有修补。

回答:

如果你想做聚合,你可以使用aggregation features of the ORM

from django.db.models import Count
Members.objects.values('designation').annotate(dcount=Count('designation'))

这样可以产生类似的查询

SELECT designation, COUNT(designation) AS dcount
FROM members GROUP BY designation

并且输出将是形式

[{'designation': 'Salesman', 'dcount': 2}, 
 {'designation': 'Manager', 'dcount': 2}]

 
 Code问答: codewenda.com
Stackoverflow:How to query as GROUP BY in django?

发表评论

电子邮件地址不会被公开。 必填项已用*标注

27 − = 25