Django项目单字段的区间查询

news2024/9/22 19:37:41

在Django项目中会碰到一些需求就是查询某个表中的一些字段从某日到某日的数据,而且是对但字段查询这个时候我们有两两种方法解决

单字段类型是DateTimeField的
查询日期范围的 这个时候在filter.py里面重写DateTimeFromToRangeFilter,为什么要重写呢?
因为我们做区间查询 起始与结束时间两个日期当天的数据也需要的,如果不重写的话起止两天当天的数据是没有的,它的查询规则是<=没有>=这个时候我们就需要去重写,在获得结束日期的时候给它加一天日期即可达到效果>=
注意重写这个方法URL必须按照规定前缀后缀是 _after 和 _before

	http://192.168.31.14:8000/gt_computer/?create_time_after=2023-09-13&create_time_before=2023-09-13

filters.py

	class CustomDateTimeFromToRangeFilter(filters.DateTimeFromToRangeFilter):
	    def filter(self, qs, value):
	        if value and value.stop:
	            new_value = slice(value.start, value.stop + timedelta(days=1))
	            return super().filter(qs, new_value)
	        return super().filter(qs, value)
	
	
	class ComputerFileter(filters.FilterSet):
	    create_time = CustomDateTimeFromToRangeFilter()
	
	    class Meta:
	        model = ComputerStatusRecord
	        fields = '__all__'

serializers.py

	class ComputerSerializer(ModelSerializer):
	    create_time = serializers.DateTimeField(format="%Y-%m-%d %H:%M:%S", read_only=True)	
	    # 注意重写之后需要添加read_only要不然models.py里面的设置的属性没用了
	
	    class Meta:
	        model = ComputerStatusRecord
	        fields = "__all__"

在这里插入图片描述
方法二
上面的方法单指的是时间字段,方法二可以指认到数字及时间都可以匹配,就是当我们get请求进来都会走到get_queryset,这个时候我们可以重写它返回指定的内容做区间查询即可。

这个时候我们就不需要指定固定前后缀都可以使用

views.py

    def get_queryset(self):
        queryset = super().get_queryset()
        filters = {}
        for field_name in ['sum_number', 'over_kill_number', 'miss_number',		# 需要区间查询的字段
                           'over_kill_rate', 'miss_rate']:
            after = self.request.query_params.get(f'{field_name}_after')	# 可以根据自己的需求而定
            before = self.request.query_params.get(f'{field_name}_before')

            if after and before:
                filters[f'{field_name}__gte'] = after		
                filters[f'{field_name}__lte'] = before

        if filters:
            queryset = queryset.filter(**filters)	# 区间查询

        return queryset

在这里插入图片描述
技术小白记录学习过程,有错误或不解的地方请指出,如果这篇文章对你有所帮助请点赞 收藏+关注 期待您的关注,谢谢支持!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/1152898.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

kubernetes部署(web界面)

基本队对象 pod 最小单位 service 跟网络相关 Volume Namespace 准备工作&#xff1a; master node1 node2 修改主机名&#xff1a; 做本地解析 10.0.0.51 master 10.0.0.56 node-1 10.0.0.186 node-2 关闭swap分区&#xff1a; swapoff -a  临时关闭 …

双点双向重发布解决方案

某公司有两张园区网络&#xff0c;分别是A园区和B园区&#xff0c;由于业务需求&#xff0c;需要将两张园区网络整合到一起&#xff0c;实现互联互通。 因此管理员将AR2-AR4、AR3-AR5通过物理线缆相连&#xff0c;并且此互联链路运行在ospf 100中。 现在要求工程师在AR2和AR3…

AD教程(三)IC类元件模型的创建

AD教程&#xff08;三&#xff09;IC类元件模型的创建 IC类元件 IC芯片&#xff08;Intergrated Circuit Chip&#xff09;是将大量的微电子元器件&#xff08;晶体管、电阻、电容等&#xff09;形成的集成电路放在一块塑基上&#xff0c;做成一块芯片。 IC类元件的创建 新…

JAVA发票管理的收货单订单创建发票详情介绍

本人详解 作者&#xff1a;王文峰&#xff0c;参加过 CSDN 2020年度博客之星&#xff0c;《Java王大师王天师》作者 公众号&#xff1a;山峯草堂&#xff0c;非技术多篇文章&#xff0c;专注于天道酬勤的 Java 开发问题、中国国学、传统文化和代码爱好者的程序人生&#xff0c;…

用十万字讲明白linux和java的零复制技术

linux I/O 读写方式 Linux提供了轮询、I/O中断以及DMA传输这3种磁盘与主存之间的数据传输机制。 轮询方式是基于死循环对 I/O 端口进行不断检测。 I/O中断方式 I/O 中断方式是指当数据到达时&#xff0c;磁盘主动向 CPU 发起中断请求&#xff0c;由 CPU 自身负责数据的传输…

10.31一些代码分析,香浓展开,移位器(桶形多位),二进制转格雷码

always的block之间&#xff0c;采用并行执行 always之内&#xff0c;采用非阻塞赋值&#xff0c;为顺序执行 一些代码分析 这个把使能信号和W信号组合在一起&#xff0c;进行case语句&#xff0c;即只有合并信号最高位为1时&#xff0c;才进行操作 always后面要写&#xff0…

springboot大学生就业推荐系统 毕业设计-附源码01535

摘 要 信息化社会内需要与之针对性的信息获取途径&#xff0c;但是途径的扩展基本上为人们所努力的方向&#xff0c;由于站在的角度存在偏差&#xff0c;人们经常能够获得不同类型信息&#xff0c;这也是技术最为难以攻克的课题。针对学生就业管理等问题&#xff0c;对学生就业…

关于脉冲发生器,你知道多少?

01 引言 脉冲发生器&#xff08;Pulse Generator&#xff0c;PG&#xff09;是产生脉冲信号的专用仪器。它可以生成具有特定频率、幅值和脉冲宽度的脉冲信号&#xff0c;常用于各种科学、工程和技术领域中的实验、测试、通信和控制应用。 那么&#xff0c;对于一台脉冲发生器…

SDH传输分析仪有什么用? TFN D300S SDH传输分析仪详解

数字传输分析仪是数字通信中最重要、最基本的测试仪器&#xff0c;主要用于测试数字通信信号的传输质量&#xff0c;其主要测试参数包括误码、告警、开销、抖动和漂移等&#xff0c;其广泛应用于数字通信设备的研制、生产、维修和计量测试&#xff0c;还可应用于数字通信网络的…

自学VUE笔记

一、基础语法学习 1、Attribute 绑定 a、绑定单个属性&#xff1a;给这个div 增加id 属性 ​ <div v-bind:id"dynamicId"></div>简写&#xff1a; <div :id"dynamicId"></div> b、绑定多个属性值 data() {return {objectOf…

20年经典传承 | 性能圣典!火焰图发明者Brendan Gregg“神作”

20年20本经典畅销书 NO.9 豆瓣评分9.3 性能大师经典巨著 每一个学习性能优化/性能评估的工程师的必备手册 性能测量的水相当深&#xff0c;斯坦福大学的 John Ousterhout 教授在“Always Measure One Level Deeper”一文&#xff08;《ACM 通讯》杂志&#xff0c;2018 年第…

信创强国 | 安全狗荣获信创工委会技术活动单位证书

近日&#xff0c;安全狗荣获中国电子工业标准化技术协会信息技术应用创新工作委员会&#xff08;以下简称“信创工委会”&#xff09;颁发的信息技术应用创新工作委员会技术活动单位证书。 作为国内云原生安全领导厂商&#xff0c;安全狗在信息技术应用创新方面有多年的技术积累…

【教3妹学编辑-算法题】每棵子树内缺失的最小基因值

3妹&#xff1a;“太阳当空照&#xff0c;花儿对我笑&#xff0c;小鸟说早早早&#xff0c;你为什么背上炸药包” 2哥 :3妹&#xff0c;什么事呀这么开发。 3妹&#xff1a;2哥你看今天的天气多好啊&#xff0c;阳光明媚、万里无云、秋高气爽&#xff0c;适合秋游。 2哥&#x…

TypeScript之类

一、是什么 类&#xff08;Class&#xff09;是面向对象程序设计&#xff08;OOP&#xff0c;Object-Oriented Programming&#xff09;实现信息封装的基础 类是一种用户定义的引用数据类型&#xff0c;也称类类型 传统的面向对象语言基本都是基于类的&#xff0c;JavaScript …

关于我React项目热更新没起效果的问题

最近&#xff0c;我拉下来一个react项目&#xff0c;嗯&#xff0c;什么都可以运行&#xff0c;然后自己熟悉一下代码之后写一个自己页面&#xff0c;然后每修改一下代码我都要重新启动&#xff0c;然后网上搜一大串子我都没成功&#xff0c;而且人家原来代码里边也有热更新处理…

Python 常用内置函数详解(一):isinstance()函数----判断对象是否是类或子类

目录 一、功能二、语法和示例三、补充&#xff1a;issubclass()函数---判断是否是其他类的子类 一、功能 isinstance() 函数用于判断对象是否是类或者类型元组中任意类元素的实例。 二、语法和示例 语法结构如下&#xff1a; isinstance(object, classinfo) # ① object&a…

可可爱爱的polo领卫衣,女儿穿也太好看了吧

分享女儿的时尚穿搭—卫衣 Polo领半拉链设计 满满的学院风和学生气息 乖巧甜美的少女感瞬间突显 灰色经典宽松版型&#xff0c;不挑人穿的哦

购物车死了吗?拼多多的社交电商革命

亲爱的小伙伴们&#xff0c;大家好&#xff01;我是小米&#xff0c;今天要和大家聊一聊一个备受关注的话题&#xff1a;拼多多为什么没有购物车&#xff1f;这是一个网易产品经理面试题&#xff0c;但也是一个备受争议的话题。让我们一起来探讨一下吧&#xff01; 拼多多的购…

计算机网络-IP地址

文章目录 子网划分定长子网划分子网划分的方法子网掩码 可变长子网划分 无类别编址网络前缀路由聚合 特殊用途的IP地址专用网络地址链路本地地址运营商级NAT共享地址用于文档的测试网络地址 IP地址的规划和分配IP地址的规划和分配方法IP地址的规划和分配实例 子网划分 定长子网…

Leetcode刷题详解——三步问题

1. 题目链接&#xff1a;面试题 08.01. 三步问题 2. 题目描述&#xff1a; 三步问题。有个小孩正在上楼梯&#xff0c;楼梯有n阶台阶&#xff0c;小孩一次可以上1阶、2阶或3阶。实现一种方法&#xff0c;计算小孩有多少种上楼梯的方式。结果可能很大&#xff0c;你需要对结果模…