繁体   English   中英

Django从查询集列表创建列表

[英]django create list from a queryset list

我有来自Django查询集的对象列表,例如

my_list = MyObject.objects.filter(variable=something)

MyObject具有一个称为year的字段,该字段设置为特定年份,例如2005、2007、2009

我想使用my_list并创建一个年份字典,其中包含该年份的所有MyObject值。 例如

my_dict['2005'] = list of objects from my_list which match year = 2005
my_dict['2006'] = list of objects from my_list which match year = 2006
my_dict['2007'] = list of objects from my_list which match year = 2007
my_dict['2008'] = list of objects from my_list which match year = 2008

谁能告诉我这样做的最好方法。 我已经对第一位进行了排序,例如获取my_list。 我只需要将它分解成几年。 我尝试自己编写它,但是由于大量的for循环和db查询,它变得非常低效

谢谢

import collections

mydict = collections.defaultdict(list)

for obj in my_list:
  mydict[obj.year].append(obj)

(不要将查询集称为“ my_list”,它实际上不是列表,而是查询集。将其称为“ my_objects”。)

my_dict = {}
for obj in my_objects:
    my_dict.setdefault(obj.year, []).append(obj)

暂无
暂无

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

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