2010-05-12 172 views
3

假設我想要模擬一個數據可以有多個標記的系統(例如,StackOverflow上的問題是數據,它的標記是標記)。我可以在Django以下模型這樣的:Django查詢字段值是否是多個選項之一

class Tag(models.Model): 
    name = models.CharField(10) 

class Data(models.Model): 
    tags = models.ManyToManyField(Tag) 

給定一組字符串,什麼是去尋找他們的標籤列表中有這些字符串作爲標籤的名字一個所有數據對象的最佳方式。我已經提出了以下內容,但不禁想到還有更多的「Djangonic」方式。有任何想法嗎?

tags = [ "foo", "bar", "baz" ] 
q_objects = Q(tags__name = tags[0]) 
for t in tags[1:]: 
    q_objects = q_objects | Q(tags__name = t) 
data = Data.objects.filter(q_objects).distinct() 

回答