如何获得由字段键入的模型对象的字典

时间:2013-11-06 20:25:09

标签: python django model

假设我的Django模型名为'Blog',主键字段为'id',是否有一个我可以运行的查询,它将返回一个字典,其中包含索引Blog模型实例的id值的键?

in_bulk()似乎就像我想要的那样,但在这种情况下它需要一个特定id值的列表,例如。

Blog.objects.in_bulk([1])

将给出

{1: <Blog: Beatles Blog>}

该文档说如果你传递一个空列表,你会得到一个空字典,那么有什么办法可以让所有值回来吗?

3 个答案:

答案 0 :(得分:9)

这只是python

{x.pk:x for x in Blog.objects.all()}

编辑:

Alb这里,只是补充说如果您使用的是Python 2.6或更早版本,则需要使用这种旧式语法:

dict((x.pk, x) for x in Blog.objects.all())

答案 1 :(得分:2)

in_bulk第一个参数id_list默认为None,所以不要传递任何东西

Blog.objects.in_bulk()  

答案 2 :(得分:0)

您还可以尝试将ValuesListQuerySet对象放入&#34; in_bulk&#34;像这样的方法:

blog_query = Blog.objects.values_list('pk', flat=True)
Blog.objects.in_bulk(blog_query)