【问题标题】:How could I get django query from one model and add the information from the model ForeignKey to it?如何从一个模型中获取 django 查询并将模型 ForeignKey 中的信息添加到它?
【发布时间】:2017-12-11 21:04:29
【问题描述】:

我想在一个查询中获取所有Blogs,同时,如果博客有,我想知道每个博客的条目(或多个条目)。

class Blog(models.Model):
    name = models.CharField(max_length=100)
    tagline = models.TextField()

class Entry(models.Model):
    blog = models.ForeignKey(Blog)
    headline = models.CharField(max_length=255)

like 访问 blog.ENTRY 属性。这是首先想到的方法。 1) 获取所有博客,2) 设置每个博客条目属性及其条目:

for blog in Blog.objects.all():
    entry = Entry.objects.filter(blog=blog)
    setattr(blog, 'ENTRY', entry)

但我只想在一个查询中执行此操作,因为我不想在 for 循环中执行 Entry 过滤器查询。

【问题讨论】:

标签: django


【解决方案1】:

代码:

Entry.objects.all().select_related('blog')

将获取所有Entry 对象并在单个任务中填充它的blog 属性。

在单个查询中无法对 Blog 模型执行相同操作,因为关系是一对多的。

要更好地了解什么是可能的,什么是不可能的,请查看 cmets 中与 select_relatedprefetch_related 相关的推荐主题。尤其是第二个。

【讨论】:

    猜你喜欢
    • 2020-10-17
    • 2014-03-26
    • 1970-01-01
    • 2018-07-24
    • 2022-07-28
    • 2015-04-07
    • 2018-12-04
    • 1970-01-01
    • 2021-03-26
    相关资源
    最近更新 更多