繁体   English   中英

Django使用模型字段的值作为键和模型实例的值创建字典

[英]Django create a dict with values of a model field as key and model instance as value

我有一个Quest模型,它具有字段type 我想要一个将type映射到Quest列表的字典。 我当前的操作方式是遍历所有Quest对象并将它们附加到列表中。

from collections import defaultdict

quests = Quest.objects.all()
dictionary = defaultdict(list)
for quest in quests:
    dictionary[quest.type].append(quest)

我想知道Django QuerySet是否有更好的方法。 我查找了aggregation()value_list()values()但它们似乎没有实现我想要的功能。

我不知道任何此类django QuerySet功能。 但是,您可以使用查询按type对任务进行排序,以便可以在dict理解中使用itertools.groupby ,而不必在Python中进行排序:

from itertools import groupby

quests = Quest.objects.all().order_by('type')
dictionary = {k: list(g) for k, g in groupby(quests, key=lambda q: q.type)}

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM