首页 > 其他分享 >Django多条件不定项查询

Django多条件不定项查询

时间:2024-07-17 14:51:50浏览次数:15  
标签:get request 查询 filter experiment Django page condition 不定

在开发网站过程中遇到一个多条件查询,但并不要求全部填写的情况,如下图,可以只填name,也可以四个全部填好。

 

极端情况下四个字段都不填写,直接查询,此项目中这里不填默认为ALL,查数据库所有。

如果使用if判断,每种情况写一个filter,需要15个判断语句。很麻烦,不美观,且代码可拓展性差。

解决办法是使用一个字典,将不为空的查询参数塞进去,亲测可行。代码如下:

def advancedSearch(request):
    visit_page_num = int(request.GET.get("page", 1))
    symbol = request.POST.get("symbol")
    species = request.POST.get("species")
    experiment = request.POST.get("experiment")
    disease = request.POST.get("disease")

    # 极端情况下可以都为空的,不定项查询
    filter_condition = dict()
    if symbol != "ALL":
        filter_condition['symbol'] = symbol
    if species != "ALL":
        filter_condition['species'] = species
    if experiment != "ALL":
            filter_condition['experiment__contains'] = experiment # 实验 模糊查询 很多个实验里只要包含就查出来
    if disease != "ALL":
        filter_condition['disease'] = disease

    result_set = Genes.objects.filter(**filter_condition)

    page, paginator, page_range = page_func(result_set, visit_page_num)
    return render(request, 'result.html',
                  {"driverSet": page, "paginator": paginator,
                   "visit_page_num": visit_page_num,
                   "page_range": page_range
                   })

代码里page_func()是我的分页方法,这里忽略不看就行了。

 

标签:get,request,查询,filter,experiment,Django,page,condition,不定
From: https://www.cnblogs.com/isayruby/p/18307372

相关文章

  • 如何在Oracle数据库中查询表和字段说明
    在Oracle数据库中,了解表和字段的说明对于数据库管理员和开发人员来说非常重要。这些信息有助于理解数据结构和设计意图。本文将介绍如何使用SQL查询语句获取Oracle数据库中所有表的名称及其说明,以及每个表中字段的名称、类型和说明。查询表说明在Oracle中,表的说明存储在ALL_TAB......
  • Django DRF @action 装饰器
    @action装饰器在DjangoRESTFramework(DRF)中非常有用,它可以帮助你在ViewSet中创建自定义的动作,而不仅仅是依赖标准的CRUD操作(Create,Read,Update,Delete)。以下是@action装饰器的一些常见用法:1.创建自定义集合动作detail=False表示这个动作是针对整个集合的。例如,你......
  • Django使用 DoesNotExist 异常和 Logger 来记录异常情况
     代码不仅处理了特定的异常类型,还可以添加更多的调试信息来帮助诊断问题。可以使用DoesNotExist异常和Logger来记录异常情况。fromdjango.core.exceptionsimportObjectDoesNotExistimportlogginglogger=logging.getLogger(__name__)try:rst=CU009HModel......
  • Django导出EXCEL并确保表头左右两列显示
    以下是导出EXCEL确保表头左右两列显示正确值的代码示例:fromopenpyxlimportWorkbookfromopenpyxl.stylesimportAlignment#创建一个新的工作簿和工作表wb=Workbook()ws=wb.active#模拟订单头信息(替换为您的实际数据获取方法)order_header={'od_no':'SO......
  • MySQL 上亿数据查询优化:策略与实践
    引言在大数据时代,数据库中存储的数据量经常达到数千万甚至上亿条记录。面对如此庞大的数据集,如何优化SQL查询以快速检索所需信息,成为了每个数据库管理员和开发人员必须掌握的技能。本文将深入探讨针对MySQL中上亿数据量的查询优化策略,并通过具体操作指导实践。了解数据分布......
  • MYSQL DQL in 到底会不会走索引&in 范围查询引发的思考。
    前情引子in会不会走索引?很多人肯定会回答、废话、如果命中了索引、那肯定会走。其实我和大多数人一样、一开始也是这么想的、直至有一个血淋淋的案子让我有所改观、有所思考。背景介绍业务的工单表、我们分了64张、以userId作为分表键、业务实际场景中未使用到搜索引擎、主要......
  • Django项目中使用markdown语法
    要让Django项目支持Markdown语言,你可以使用第三方库markdown来转换Markdown文本到HTML。以下是如何在Django项目中集成Markdown支持的步骤:1.安装Markdown库首先,安装Markdown库:pipinstallmarkdown2.在视图中使用Markdown在你的视图函数中,使用Markdown库将Markdown文本转......
  • 揭秘 Java 变长参数:如何优雅地处理不定数量的字符串
    哈喽,大家好,我是木头左!理解变长参数:基础概念在Java中,变长参数也称为可变参数,它允许你传递任意数量的参数到一个方法中。这个特性是通过使用三个点符号...来实现的。当你在方法的参数列表中使用...时,任何传递给该方法的额外参数都会被当作数组来处理。这为提供了一种灵活的方式......
  • 【Django】网上蛋糕项目商城-购物车和我的订单功能
    1.购物车功能在首页中的滚动栏的商品,热门商品,新品,以及商品详情中都有加入购物车按钮在models文件中创建购物车表,用于保存当前用户添加的商品信息#购物车表classShoppingCar(models.Model):#用户iduserId=models.IntegerField()#商品idgoodsId=......
  • DM层次查询
    一、前言通常有些情况需要查询获得某单位的上级或下级的信息,这种查询关系属于层级递归查询(又称:树状结构查询),该技术涉及根节点、父节点、子节点、叶子节点等特点运用,帮助我们很快定位出一个部门的组织层级关系,按预定的条件展示出来。二、层次查询实现技术2.1层次查询子句......