zoukankan      html  css  js  c++  java
  • Q查询的高级用法

    示例:如前端需要通过下拉框选择需要通过什么过滤字段来查询输入的关键字,后端如何使用Q查询过滤包含输入的关键字呢?

    def customers(request):
        search_field = request.GET.get('search_field') #选择查询的字段
        kw = request.GET.get('kw') # 搜索关键字
        if kw:
            # 根据传过来的关键字搜索过滤出总数据 用**打散的方式,因为search_field不是关键字
            # 此时过滤的还不是包含关键字的,需要在前端下拉选项中设置value的值为qq__contains这种写法
            # 方式一 使用**打散
            customer_list = models.Customer.objects.filter(**{search_field:kw}) # 打散后形式 qq__contains=小明  
            # 方式二 
            q_obj = Q() # 生成Q对象
            # q_obj.connector = 'or' # 指定Q查询的连接符,默认不写就是and
            q_obj.children.append((search_field,kw))  # 传入元组形式的数据 and关系  Q(qq__contains='xx')&Q(name__contains='小明')
            customer_list = models.Customer.objects.filter(q_obj)  #直接将Q对象传入过滤条件中
            .....
            return render(request, 'customers.html')
    
  • 相关阅读:
    Maven中profile和filtering实现多个环境下的属性过滤
    Java 非法字符: 65279的解决办法
    MySQL军规
    php 时间日期函数
    函数的引入
    linux下修改mysql版本5.7 修改默认字符集
    mysql语句规范
    永久修改mysql提示符
    复杂函数
    函数的特性
  • 原文地址:https://www.cnblogs.com/weiweivip666/p/13816678.html
Copyright © 2011-2022 走看看