2013-08-16 120 views
0

我有一個ManyToMany域,說tags模型Article。現在有一個查詢選擇全部Articletags包含X1和X2以及X3 ...其中X1,X2,X3 ...是Tag對象。我怎樣才能獲得最終結果的查詢集?Django queryset過濾多個域的問題

更正式地說:

class Tag(models.Model) { 
    ... 
} 
class Article(models.Model) { 
    tags = models.ManytoManyField(Tag) 
} 

回答

0

既然你正在尋找所有標籤爲一個特定的文章,您可以使用the Q filter然後鏈Q小號

tags = ['X1', 'X2', 'X3'] 
qs = [Q(tags__name=tag.name) for tag in tags] 

query = qs.pop() #get the first element 

for q in qs: 
    query &= q 

articles = Article.objects.filter(query) 
+0

哇,類Q是這樣強大!它完全符合我的需求。謝謝 –