我查询一个模型:

Members.objects.all()

然后它返回:

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

我想知道Django开火的最佳方式

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

当然,这是行不通的.

推荐答案

如果要进行聚合,可以使用aggregation features of the ORM:

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

这将导致一个类似于

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

输出的形式是

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

如果不包括order_by(),如果默认排序不是预期的,则可能会得到不正确的结果.

如果要在结果中包含多个字段,只需将它们作为参数添加到values,例如:

    .values('designation', 'first_name', 'last_name')

参考文献:

Python相关问答推荐

将numpy数组与空数组相加

Python如何让代码在一个程序中工作而不在其他程序中工作

如何在不使用字符串的情况下将namedtuple属性传递给方法?

pyramid 内部数组中的连续序列-两极

使用argsorted索引子集索引数组

如何使用Tkinter创建两个高度相同的框架(顶部和底部)?

使用图片生成PDF Django rest框架

Pandas 除以一列中出现的每个值

如何使用SubProcess/Shell从Python脚本中调用具有几个带有html标签的参数的Perl脚本?

如何计算两极打印机中 * 所有列 * 的出现次数?

Select 用a和i标签包裹的复选框?

删除任何仅包含字符(或不包含其他数字值的邮政编码)的观察

从numpy数组和参数创建收件箱

如何记录脚本输出

为什么这个带有List输入的简单numba函数这么慢

删除字符串中第一次出现单词后的所有内容

什么是最好的方法来切割一个相框到一个面具的第一个实例?

如何更改groupby作用域以找到满足掩码条件的第一个值?

如何杀死一个进程,我的Python可执行文件以sudo启动?

使用Openpyxl从Excel中的折线图更改图表样式