zoukankan      html  css  js  c++  java
  • 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对象搜索的经典例子,请千万牢记,可以多次利用

  • 相关阅读:
    JVM,反射与动态代理
    11款实用的一句话网站设计代码
    Winform TextBox中只能输入数字的几种常用方法(C#)
    列表checkbox全选
    函数调用约定
    vs编译后在本机能运行,在别的机器上运行提示runtime Error的问题
    学习地形编程(一)
    Ogre中动态三维鼠标的实现
    讲讲volatile的作用
    绕任意轴旋转的推导
  • 原文地址:https://www.cnblogs.com/aaaajayheng1990/p/10954466.html
Copyright © 2011-2022 走看看