Django本身提供了丰富的查询过滤操作,除了常规简单操作之外,还提供了复杂条件查询功能——Q对象。通过Q对象我们可以实现组合查找,为了实现模糊查询,利用Python的map/reduce:1
2
3
4
5
6import operator
from functools import reduce
from django.db.models import Q
#key是一个关键词组
ModelName.objects.filter(reduce(operator.or_, map(lambda x:Q(name__icontains=x), key)))
为了实现更精确的模糊搜索,需要对输入的关键词进行分词,中文分词可以利用Jieba分词实现,这部分以后添加。