python - Django 在 order_by 之后从字段中获取值
问题描述
在根据其中一个字段对模型进行排序后,我试图从字段中获取共享值。例如,我有一个名为Course
:
class Course(models.Model):
code = models.CharField(max_length=100)
university = models.CharField(max_length=100)
instructor = models.CharField(max_length=100)
然后根据我的教练订购:
Course.objects.all().order_by('instructor').distinct('instructor')
然后会给我例如
- ABC123,Uni1,亚当森
- EFG456,Uni1,亚当森
- HIJ789,Uni1,詹姆斯
- KLM321, Uni1, 詹姆斯
如何将结果作为字典检索,其中键是讲师,值是模型对象的查询集?所以我会得到一些东西,比如:
result = {
"Adamson":<QuerySet[]>,
"James":<QuerySet[]>
}
我找不到这样做的聚合函数有没有办法使用单一方法来做到这一点?
解决方案
您可以使用模块 [python-doc]的groupby(…)
函数 [python-doc]对数据进行后处理:itertools
from itertools import groupby
from operator import attrgetter
qs = Course.objects.all().order_by('instructor')
result = {
k: list(vs)
for k, vs in groupby(qs, attrgetter('instructor'))
}
推荐阅读
- azure-devops - 如何将多个摘要上传到 Azure DevOps Server 2020 中的发布阶段?
- reactjs - 无法使用 npm install 和依赖项安装 React
- node.js - 尝试在“handleTeamsMessagingExtensionQuery”中获取用户详细信息时,“机器人不是对话名单的一部分”
- r - 参与者的 cumsum 并在 0 R 上重置
- php - PHP:附加到 AWS s3 存储桶
- c - 将 char array[] repersenting hex 值转换为 u64
- java - 从简单对象访问 CDI?
- oracle - Oracle External Table RECORDS DELIMITED BY '",\n"' 不起作用,如何同时用字符和换行符分隔?
- javascript - 当用户单击提交并在响应提交之前验证它时,如何从表单中获取数据?
- pandas - Pandas 计算键的出现次数