CRM--搜索功能

实现功能: 提供接口,根据用户需求实现模糊搜索、精确搜索、组合搜索

提供给使用strak组件接口,可以自定制搜索条件为模糊搜索或者精准搜索

实现原理: 根据ORM查询语句来查询数据库并返回给前端

原理就是利用orm的查询语句得到符合搜索条件的数据,并返回给前端页面

query_test = self.model_class.objects.filter(Q(name__contains='t') | Q(age=21))
print(query_test)

其本质就是通过语句在数据库中查询到符合条件的数据并返回给页码

实现思路

  1. 编写前端搜索的input框
  2. 根据组件配置判断是否显示搜索款
  3. 在后端中拿到用户输入的搜索条件
  4. 拿到搜索条件后利用查询语句去搜索出数据

所需知识点:

1、 Django的模型中 contains
UserInfo.objects.filter(name__contains='祥祥')

contains包含匹配, 就是模糊查询的本质 利用双下划线__   去数据库中匹配指定字段的关键字

2、Django的Q对象查询

当我们搜索语句不仅仅只有一个条件的时候,比如 名字中包含什么,或者年龄大于多少 这种组合搜索的时候,我们就需要利用Q的查询方法,因为默认的filter过滤是并且的链接方式

所以我们利用Q语句将搜索条件变为或者

Q对象的用法:

from django.db.models import Q

conn = Q() # 生成Q对象

conn.connector = 'OR' # 将Q的条件设置为OR conn.children.append((name__contains, 'alex')) # !注意,搜索条件和用户输入的搜索内容必须以元祖的形式一起append到Q对象的children中去 固定用法

conn.children.append((age, 22)) # 元祖的形式

data = UserInfo.objects.filter(conn) # 将Q对象为filter条件
 

上面的例子就是Q对象搜索的经典例子,请千万牢记,可以多次利用

原文地址:https://www.cnblogs.com/aaaajayheng1990/p/10954466.html