6

我在我的 Django 网站上实现了一个简单的 LIKE 搜索,我目前使用的是以下代码:

from django.db.models import Q
posts = Post.objects.filter(Q(title__icontains=query)|Q(content__icontains=query))

query字符串在哪里。这会产生一条LIKESQL 语句,并且工作得很好。现在我还想将我的搜索查询拆分为术语或单词:

words = query.split(' ')

所以words现在包含一个单词列表,我想实现一个类似于以下的 SQL 语句:

SELECT ... FROM foo WHERE `title` ILIKE '%word1%' OR `title` ILIKE '%word2%'
  OR `content` ILIKE '%word1%' OR `content` ILIKE '%word2%'

如果有两个以上的词,我希望声明能够按每个词列出所有条目。

有任何想法吗?谢谢!

4

1 回答 1

11
reduce(operator.or_, sequence_of_Q_objects)
于 2010-11-10T17:50:25.407 回答