2012-01-25 51 views
2

是否有可能在查询Django Model而不是对象列表时获取字典? 例如:从模型查询获取字典

ids = [1, 2, 3, 4, 5] 
objs = someModel.objects.filter(pk__in = ids) 

它返回对象列表。我想要的是以某种方式,如果我可以,我想用主键作为关键字的对象字典。

objs = {1: query_object, 2: quer_object, 3: quer_object, 4: quer_object, 5: quer_object} 

回答

-1
objs = dict([(obj.pk, obj) for obj in objs]) 
+0

不记得了我的头如何从一个对象的主键的上方,所以' obj.pk'部分可能有点不对。如果是的话请纠正。 – Peter

+0

感谢您的回应,我想如果没有内置的方法在Django中做同样的? –

+0

我不这么认为,它在一般意义上起什么作用?这不是很难做到:) – Peter

-1

您可以使用列表解析手动创建:

dict([(obj.pk, obj) for obj in objs]) 
1

您也可以尝试把ValuesListQuerySet对象,以这样的“in_bulk”的方法:

someModel_query = someModel.objects.values_list('pk', flat=True) 
someModel.objects.in_bulk(someModel_query)