python - Django ORM 分组依据

标签 python mysql django django-models

我有以下模型。

Class A(models.Model):
    tmp_field = models.IntegerField()
    ...
    ...

现在我只想获取 id 并根据 tmp 字段将它们分组在一起。

我的查询看起来像

A.objects.all().values('id')

所以我想要这样的东西。

[
    {tmp1: [id1, id2, id3]},
    {tmp2: [id5, id6, id7]},
    {tmp3: [id12, id213, id1299]}
    ...
]

如何按 tmp_field 对它们进行分组。

最佳答案

更改值查询集以同时获取 tmp 字段

queryset = A.objects.all().values('id', 'tmp')

然后使用defaultdict构造你需要的字典

from collections import defaultdict
d = defaultdict(list)
for q in queryset:
    d[q['tmp']].append(q['id'])

结果d将是一个以tmp为键的字典。这与您的问题略有不同(您有一个字典列表,每个字典都有一个键)。如果您需要不同的数据结构,您可以调整代码。

关于python - Django ORM 分组依据,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/41678167/

相关文章:

Python 没有打开 .py 文件

mysql - MySQL 中何时使用单引号、双引号和反引号

python - Heroku 与 Django 的使用

python - 如果我有 PYC 文件,是否需要安装 Python?

python - 在 Python 3.6 上使用 brew 安装 pipenv

mysql - 如何解决第 1 行的 sql 错误 "product portfolio has diversified to encompass a highly successful multi-brand'”

javascript - Django Ajax 未进入函数

Django - 为自定义小部件指定默认属性

python - 在同一程序中使用 Python 2 和 3 库的正确方法(如果有)是什么?

mysql - 如何通过mysql中的单个过程更新两个不同数据库中存在的两个不同表的记录?