Python-如何在Django中以GROUP BY查询?

发布于 2021-02-02 23:18:29

我查询一个模型:

Members.objects.all()

它返回:

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

我想要的是知道group_by向我的数据库发送查询的最佳Django方法,例如:

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

当然,这不起作用。我知道我们可以在上做一些技巧django/db/models/query.py,但是我很好奇知道如何在不打补丁的情况下进行操作。

关注者
0
被浏览
77
1 个回答
  • 面试哥
    面试哥 2021-02-02
    为面试而生,有面试问题,就找面试哥。

    如果你打算进行聚合,则可以使用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}]
    


  • 面试哥
    面试哥 2021-02-02
    为面试而生,有面试问题,就找面试哥。

    怎样打补丁实现group_by



知识点
面圈网VIP题库

面圈网VIP题库全新上线,海量真题题库资源。 90大类考试,超10万份考试真题开放下载啦

去下载看看