[英]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.