【问题标题】:Django ORM grouped by query按查询分组的 Django ORM
【发布时间】:2014-10-16 11:05:15
【问题描述】:

我有一个模特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 循环查询模型生成上述内容,但我想知道是否有相同的直接查询?

【问题讨论】:

    标签: django django-queryset django-orm


    【解决方案1】:

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

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

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

    【讨论】:

    • result = {d[item[0]].append(item[1]) for item in qset} 返回无
    猜你喜欢
    • 1970-01-01
    • 2020-01-26
    • 2021-04-30
    • 2017-03-30
    • 2012-04-26
    • 2018-03-10
    • 2014-08-27
    • 1970-01-01
    • 2015-08-15
    相关资源
    最近更新 更多