Django ORM按查询分组

时间:2014-10-16 11:05:15

标签: django django-queryset django-orm

我有一个模型ArmCodeMapping

class ArmCodeMapping(models.Model):
    arm_id = models.CharField(max_length = 255)
    code = models.CharField(max_length = 255, unique = True)

记录如下: -

arm_id , code
1,abc
1,def
1,ghi
1,werer
2,xyz
2,ghynn

等等。

我想写一个查询,它会返回由arm_id分组的代码,即我期待以下输出。

{1:[abc,def,ghi,werer],2:[xyz,ghynn]}

我可以使用FOR循环查询模型来生成上面的内容,但我想知道是否有相同的直接查询?

1 个答案:

答案 0 :(得分:1)

我会说values_listdefaultdict结合使用,这样您就不必创建模型实例。 QuerySets仅返回对象实例或列表实例。

d = defaultdict(list)
qset = ArmCodeMapping.objects.values_list('arm_id', 'code')
for item in qset:
    d[item[0]].append(item[1])

现在变量d填充了你想要的结果。