加入__contains和__in最简单的方法是什么?

问题描述:

我在做标签搜索功能,用户可以观察很多标签,我把它全部放在一个元组中,现在我想查找所有包含列表中至少一个标签的文本。
符号: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

在这里你去:

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

我不知道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)