2009-11-14 94 views
2

我在做標籤搜索功能,用戶可以觀察很多標籤,我把它全部放在一個元組中,現在我想查找所有包含列表中至少一個標籤的文本。
符號:text__contains__in=('asd','dsa')
我唯一的想法是做循環如:加入__contains和__in最簡單的方法是什麼?

q = text.objects.all() 

for t in tag_tuple: 
    q.filter(data__contains=t) 

例如:標籤 輸入元組,('car', 'cat', 'cinema') 輸出的所有消息什麼包含從元組至少一個字,所以My cat is in the carcat is not allowed in the cinemai will drive my car to the cinema 感謝您的幫助!

+0

您能否給一些輸入和預期輸出的例子嗎? – 2009-11-14 01:54:32

+0

立即檢查我的編輯。 – IProblemFactory 2009-11-14 12:58:32

回答

9

在這裏你去:

filter = Q() 
for t in tag_tuple: 
    filter = filter | Q(data__contains=t) 
return text.objects.filter(filter) 

一對夫婦提示:

  • 你應該用大寫來命名你的模型類(即Text,不text
  • 您可能希望__icontains代替,如果你不擔心的情況下
+0

不錯,如果它會工作,看起來很簡單,thx +1和接受答案:) – IProblemFactory 2009-11-17 20:50:34

0

我不知道Django的,所以我不知道如何應用此過濾器,但似乎你想要像這樣的一個功能:

def contains_one_of(tags, text): 
    text = text.split() # tags should match complete words, not partial words 
    return any(t in text for t in tags) 
相關問題