我有以下模型。
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/