# 要匹配的关键词 kw=["中国", "华夏", "china"] # 查询条件写入列表 queries = [Q(title__icontains=i) for i in kw] # 取出最后一个条件 q_objs = queries.pop() # 遍历所有条件并连接 for i in queries: q_objs |= i # 执行查询 Article.objects.filter(q_objs).filter(status=1)
以上代码执行的sql大概如下:
1 2 3 4 5 6 7 8 9 10 11 12 13
SELECT `article`.`id`, `article`.`time_update`, `article`.`time_create`, `article`.`title`, `article`.`status` FROM `article` WHERE ( `article`.`status` =1 AND ( `article`.`title` LIKE'%中国%'OR `article`.`title` LIKE'%china%'OR `article`.`title` LIKE'%华夏%' ) )