当前位置: 首页 > 面试题库 >

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

唐昊焜
2023-03-14
问题内容

我查询一个模型:

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,但是我很好奇知道如何在不打补丁的情况下进行操作。


问题答案:

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


 类似资料:
  • 问题内容: 我查询一个模型: 它返回: 我想要的是知道向我的数据库发送查询的最佳Django方法,例如: 当然,这不起作用。我知道我们可以在上做一些技巧,但我只是好奇地知道如何做而不打补丁。 问题答案: 如果你打算进行聚合,则可以使用ORM的聚合功能: 这导致查询类似于 并且输出将为以下形式

  • 问题内容: (这是SQL连接时线程的django版本:选择一对多关系中的最后一个记录) 假设我有一个客户表和一个采购表。每次购买都属于一个客户。我想获得所有客户的清单以及他们的上一次购买。是否可以在没有原始SQL且没有多个数据库查询的情况下完成? 问题答案: 您可以看一下类似的讨论: 从不同类别获取最新对象的Django查询 据我所知,在Django ORM中没有单步执行此操作的方法。 但是您可以

  • 我试图使用Django将PostgreSQL表提取到HTML中,当我在PostgreSQL的查询工具中执行空间查询时,我得到了完美的结果,但当我试图从Django执行相同的脚本时,我得到了所有的数据行。谢谢你提前帮忙。 姜戈剧本 HTML

  • 问题内容: 我在一个模型中有一个领域,例如: 现在,我需要按日期范围过滤对象。 如何过滤日期在1-Jan-2019和之间的所有对象31-Jan-2019? 问题答案: 采用 或者,如果你只是想按月过滤:

  • 问题内容: 1> 套装2排 2> 套装2排 3> 一组1行 为什么查询方式1>和2>会得到相同的结果?count(*)和count(somefiled)之间没有什么区别? 另外,查询2>和3>导致的结果不同,为什么 groupby 如此神奇?它是如何工作的? 更新:我正在使用MySQL5.1。:) 问题答案: 选择会给您一个结果集。如果按字段分组选择,则结果集的行将按该字段分组,并且结果集的每一行

  • 问题内容: 我需要从Django模板中执行过滤查询,以获取与视图中的python代码等效的一组对象: 在我的模板中,我想做 但我似乎无法找出如何编写FILTER。 问题答案: 你不能这样做,这是设计使然。Django框架的作者打算将表示代码与数据逻辑严格分开。过滤模型是数据逻辑,而输出HTML是表示逻辑。 因此,你有几种选择。最简单的方法是进行过滤,然后将结果传递给。或者,你可以在模型中编写一个方