我正在我的Django网站上实现一个简单的LIKE搜索,我目前使用的是以下代码:
from django.db.models import Q posts = Post.objects.filter(Q(title__icontains=query)|Q(content__icontains=query))
其中query是一个字符串.这导致LIKE sql语句并且工作正常.现在,我还想将搜索查询拆分为术语或单词:
words = query.split(' ')
所以单词现在包含单词列表,我想要实现类似于以下的sql语句:
SELECT ... FROM foo WHERE `title` ILIKE '%word1%' OR `title` ILIKE '%word2%' OR `content` ILIKE '%word1%' OR `content` ILIKE '%word2%'
如果有两个以上的单词,我希望语句增长,按每个单词列出所有条目.
有任何想法吗?谢谢!
解决方法
reduce(operator.or_,sequence_of_Q_objects)