如何获取由字段键控的模型对象的dict

2024-06-01 06:15:06 发布

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

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

in_bulk()似乎是我想要的类型,但在这种情况下,它需要一个特定id值的列表,例如

Blog.objects.in_bulk([1])

将给予

{1: <Blog: Beatles Blog>}

文件上说,如果你传递一个空列表,你会得到一个空字典,那么有没有办法让我得到所有值?


Tags: 文件django实例in模型id类型列表
3条回答

您还可以尝试将ValuesListQuerySet对象放入“in_bulk”方法,如下所示:

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

只是Python

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

编辑:

Alb在这里,只是添加了如果您使用的是Python 2.6或更早版本,则需要使用这种较旧的样式语法:

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

默认情况下,in_bulk方法的id_list参数为None,因此不要向其传递任何内容:

Blog.objects.in_bulk()  

在结果中,默认键是主键。要覆盖该用法,请执行以下操作:

Blog.objects.in_bulk(field_name='<unique_filed_name>')  

注意:密钥必须是唯一的,否则您将获得ValueError

相关问题 更多 >