2013-10-11 46 views
0
做一個查詢時

假設我有以下型號:檢查包含許多到會現場在Django

class Blog(models.Model): 
    owner = models.ForeignKey(User) 
    articles = models.ManyToManyField(Article) 

比方說,我有一個觀點,即需要一個用戶和文章作爲論據。我想獲取該用戶的所有博客,併爲每個博客檢查文章是否包含在博客文章中。因此,不要按照文章進行過濾,而要檢查是否包含每個由該用戶對所有博客進行查詢過濾返回的博客。

我想知道什麼是實現這一目標的最有效方法?

回答

1

很簡單,Django ORM可以處理多對多的過濾器。

所以,我想是這樣的:

user_blogs = Blog.objects.filter(owner=user) 

user_blogs_with_article = user_blogs.filter(articles=article) 
+0

感謝,怎麼樣,如果我有user_blogs = Blog.objects.filter(所有者=用戶)[0:10]我是否需要單獨查詢每一個? –

+0

不,你可以這樣:'Blog.objects.filter(pk__in = [blog.pk for user_blogs中的blog])。filter(articles = article)'。 –