2017-07-07 62 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相關的評論主題中的推薦內容。特別是第二個。

相關問題