Django项目单字段的区间查询

2023-10-30 14:52

本文主要是介绍Django项目单字段的区间查询,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

在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 = ComputerStatusRecordfields = '__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 = ComputerStatusRecordfields = "__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'] = beforeif filters:queryset = queryset.filter(**filters)	# 区间查询return queryset

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

这篇关于Django项目单字段的区间查询的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/308695

相关文章

springboot项目中整合高德地图的实践

《springboot项目中整合高德地图的实践》:本文主要介绍springboot项目中整合高德地图的实践,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐教... 目录一:高德开放平台的使用二:创建数据库(我是用的是mysql)三:Springboot所需的依赖(根据你的需求再

一文详解如何在idea中快速搭建一个Spring Boot项目

《一文详解如何在idea中快速搭建一个SpringBoot项目》IntelliJIDEA作为Java开发者的‌首选IDE‌,深度集成SpringBoot支持,可一键生成项目骨架、智能配置依赖,这篇文... 目录前言1、创建项目名称2、勾选需要的依赖3、在setting中检查maven4、编写数据源5、开启热

SpringBoot项目配置logback-spring.xml屏蔽特定路径的日志

《SpringBoot项目配置logback-spring.xml屏蔽特定路径的日志》在SpringBoot项目中,使用logback-spring.xml配置屏蔽特定路径的日志有两种常用方式,文中的... 目录方案一:基础配置(直接关闭目标路径日志)方案二:结合 Spring Profile 按环境屏蔽关

MySQL存储过程之循环遍历查询的结果集详解

《MySQL存储过程之循环遍历查询的结果集详解》:本文主要介绍MySQL存储过程之循环遍历查询的结果集,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐教... 目录前言1. 表结构2. 存储过程3. 关于存储过程的SQL补充总结前言近来碰到这样一个问题:在生产上导入的数据发现

MySQL JSON 查询中的对象与数组技巧及查询示例

《MySQLJSON查询中的对象与数组技巧及查询示例》MySQL中JSON对象和JSON数组查询的详细介绍及带有WHERE条件的查询示例,本文给大家介绍的非常详细,mysqljson查询示例相关知... 目录jsON 对象查询1. JSON_CONTAINS2. JSON_EXTRACT3. JSON_TA

MYSQL查询结果实现发送给客户端

《MYSQL查询结果实现发送给客户端》:本文主要介绍MYSQL查询结果实现发送给客户端方式,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐教... 目录mysql取数据和发数据的流程(边读边发)Sending to clientSending DataLRU(Least Rec

MySQL复杂SQL之多表联查/子查询详细介绍(最新整理)

《MySQL复杂SQL之多表联查/子查询详细介绍(最新整理)》掌握多表联查(INNERJOIN,LEFTJOIN,RIGHTJOIN,FULLJOIN)和子查询(标量、列、行、表子查询、相关/非相关、... 目录第一部分:多表联查 (JOIN Operations)1. 连接的类型 (JOIN Types)

MySQL版本问题导致项目无法启动问题的解决方案

《MySQL版本问题导致项目无法启动问题的解决方案》本文记录了一次因MySQL版本不一致导致项目启动失败的经历,详细解析了连接错误的原因,并提供了两种解决方案:调整连接字符串禁用SSL或统一MySQL... 目录本地项目启动报错报错原因:解决方案第一个:第二种:容器启动mysql的坑两种修改时区的方法:本地

python编写朋克风格的天气查询程序

《python编写朋克风格的天气查询程序》这篇文章主要为大家详细介绍了一个基于Python的桌面应用程序,使用了tkinter库来创建图形用户界面并通过requests库调用Open-MeteoAPI... 目录工具介绍工具使用说明python脚本内容如何运行脚本工具介绍这个天气查询工具是一个基于 Pyt

springboot项目中使用JOSN解析库的方法

《springboot项目中使用JOSN解析库的方法》JSON,全程是JavaScriptObjectNotation,是一种轻量级的数据交换格式,本文给大家介绍springboot项目中使用JOSN... 目录一、jsON解析简介二、Spring Boot项目中使用JSON解析1、pom.XML文件引入依