Django创建一个dict,其中模型字段的值为key,模型实例的值为valu

2024-09-24 22:32:58 发布

您现在位置:Python中文网/ 问答频道 /正文

我有一个模型Quest,它有一个字段type。我想要一个dict,它将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()和{},但它们似乎没有达到我想要的效果。在


Tags: 对象方法from模型import列表dictionarytype
1条回答
网友
1楼 · 发布于 2024-09-24 22:32:58

我不知道有任何这样的django^{}功能。但是,您可以使用查询将您的任务按type排序,这样您就可以在dict理解中使用{a2},而不必使用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)}

相关问题 更多 >