zoukankan      html  css  js  c++  java
  • django 中多条件搜索

    Django中我们一般用orm进行数据的交互操作,单条件搜索比较方便,那多条件呢?

    百度了一下,大部分都是如下图的解释(咱也不知道谁抄袭谁的,太可怕了),对我一点用也没有

    吐槽完上面的,我们看看下面的代码(models就不晒了,直接上views),多条件查询一行代码就能搞定,我之前还在自己写if,else进行判断取值

    @login_required
    def api_case_search(request):
        """
        apicase 搜索
        :param request:
        :return:
        """
        project = Project.objects.all().filter(flag=1)
    
        page = request.GET.get('page')
        search_data = {}
        project_id = request.GET.get('project_id')
        api_name = request.GET.get('api_name')
        api_url = request.GET.get('api_url')
        if project_id:
            search_data['project_id'] = int(project_id)
        if api_name:
            search_data['api_name'] = api_name
        if api_url:
            search_data['api_url'] = api_url
        search_data['flag'] = 1
    
        get_all_path = request.get_full_path()
        if get_all_path:
            get_all_path = str(get_all_path).split('?')[1]
            get_all_path = get_all_path.replace("&", "-")
            log.info("get_all_path:%s" % get_all_path)
    
        api_case = ApiCase.objects.filter(**search_data)
    
        paginator = Paginator(api_case, 20)
    
        try:
            contacts = paginator.page(page)
        except PageNotAnInteger:
            # 如果请求的页数不是整数,返回第一页。
            contacts = paginator.page(1)
        except EmptyPage:
            # 如果请求的页数不在合法的页数范围内,返回结果的最后一页。
            contacts = paginator.page(paginator.num_pages)
        return render(request, "api/apiIndex.html", locals())

    大致思路:通过request获取对应的值,创建一个空的字典,然后判断每一个字段是否为空,如果不为空就添加的字典中(如果需要其他字段自行添加),然后通过models进行查询,ApiCase.object.filter(字典)

    注意:这里的字典要加上**,进行解包

  • 相关阅读:
    SQL SERVER 2000 配置文件 SETUP.INI
    (转)Sybase ASE基础知识:利用Sybase Central简单操作Sybase ASE数据库
    新软发布:Autorun病毒免疫工具
    vc 编程最需要注意的地方
    (转)不得不了解VB中的CallByName
    作业总结
    (转)傻瓜式简单制作Windows7旗舰版免激活光盘镜像教程 (安装后自动激活)
    发布C#模块:平面凸包的计算
    凸包计算模块ConvexHull的使用方法
    模块发布——树类模块
  • 原文地址:https://www.cnblogs.com/jueshilaozhongyi/p/13636855.html
Copyright © 2011-2022 走看看