在 Django 中使用 select_related 选择特定字段
Selecting specific fields using select_related in Django
我有两个使用外键关联的文章和博客模型。我想在提取文章时 select 只有博客名称。
articles = Articles.objects.all().select_related('blog__name')
生成的查询显示它select编辑了博客模型中的所有字段。
我尝试将 only() 和 defer() 与 select_related 一起使用,但都没有成功。
articles = Articles.objects.all().select_related('blog__name').only('blog__name', 'title', 'create_time')
上述查询导致错误:select_related 中给出的字段名称无效:选择是:博客
如何生成查询,以便只有文章字段和博客名称是 selected?
select_related
应该在整个模型上使用,然后你可以进一步过滤它。这将起作用:
Articles.objects.select_related('blog').only('blog__name', 'title', 'create_time')
您可以使用 annotate() 来实现。
>>> a = Articles.objects.annotate(blog_name=F('blog__name')).first()
>>> a.title
>>> a.blog_name
可以通过在 only
部分再添加一个字段来完成,它是 blog
(我认为它有助于 Django 保持对象之间的关系(文章和博客):
articles = Articles.objects.select_related(
'blog',
).only(
'blog',
'blog__name',
'title',
'create_time',
)
在 Django 上测试==2.2.19
我有两个使用外键关联的文章和博客模型。我想在提取文章时 select 只有博客名称。
articles = Articles.objects.all().select_related('blog__name')
生成的查询显示它select编辑了博客模型中的所有字段。 我尝试将 only() 和 defer() 与 select_related 一起使用,但都没有成功。
articles = Articles.objects.all().select_related('blog__name').only('blog__name', 'title', 'create_time')
上述查询导致错误:select_related 中给出的字段名称无效:选择是:博客
如何生成查询,以便只有文章字段和博客名称是 selected?
select_related
应该在整个模型上使用,然后你可以进一步过滤它。这将起作用:
Articles.objects.select_related('blog').only('blog__name', 'title', 'create_time')
您可以使用 annotate() 来实现。
>>> a = Articles.objects.annotate(blog_name=F('blog__name')).first()
>>> a.title
>>> a.blog_name
可以通过在 only
部分再添加一个字段来完成,它是 blog
(我认为它有助于 Django 保持对象之间的关系(文章和博客):
articles = Articles.objects.select_related(
'blog',
).only(
'blog',
'blog__name',
'title',
'create_time',
)
在 Django 上测试==2.2.19