在任何类型的ORM中,聚合(aggregation)都是造成混乱的根源,而Django也是如此。该文档提供了各种示例,演示了如何使用Django的ORM对数据进行分组(group)和聚合(aggregation),但是我决定从另一个角度进行研究。
在本文中,我将QuerySet和SQL并排放置。如果您最喜欢SQL语言,那么这是适合您的Django GROUP BY速查表。
如何在Django中分组
为了演示不同的GROUP BY查询,我将使用Django内置django.contrib.auth
应用程序中的模型。
如何计算行数
让我们计算一下我们有多少用户:
对行进行计数非常普遍,以至于Django在QuerySet上就为其包含了一个函数。与其他QuerySet不同,我们接下来将看到它count
返回一个数字。
如何使用聚合函数
Django还提供了其它两种方法来对表中的行数。
我们将从从aggregate
开始:
为了使用aggregate
我们导入了聚合函数Count
。在这种情况下,我们使用主键列的名称id
来计数表中的所有行。
聚合返回的结果是一个字典,如下所示:
返回字典的默认键名key是id__count。最好