2017-07-07 60 views
0

我想在一个查询中获得所有Blogs,并且同时我想知道每个Blog的条目(或条目),如果博客有。如何从一个模型中获取django查询并将模型ForeignKey中的信息添加到它中?

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) 

就像访问blog.ENTRY属性一样。起初,这是想到的方式。 1)得到的所有博客,2)设定每个博客条目ATTR其条目:

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

但我想这样做,在短短的一个查询,因为我不想做键入过滤器的查询在for循环。

+0

不知道你在做什么。每个博客都有一个属性“entry_set”,它是相关条目的查询集。 –

+0

查看此线程和'select_related'的Django文档:https://stackoverflow.com/questions/33230540/django-select-related-when-to-use-it – whp

+0

对不起,请仔细阅读你的问题,这是一个更好的线程解释'select_related'和'prefetch_related':https://stackoverflow.com/questions/23121850/select-related-with-reverse-foreign-keys – whp

回答

0

代码:

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

将获取所有Entry对象并填充它在单一追求blog属性。

Blog一样,由于关系是一对多,所以在单个查询中不可能使用该模型。

要更好地了解什么是可能的和什么不可以,请参阅与select_relatedprefetch_related相关的评论主题中的推荐内容。特别是第二个。

相关问题