当前位置: 首页 > news >正文

Django 常见的操作符

在filter() 方法,exclude() 方法中使用大于,小于,模糊匹配等操作符。

常见的操作符如下:

操作符含义示例
=等于Book.objects.filter(price=10)
!= 或 __ne不等于用于查找字段不等于特定值的记录。但更常用exclude()方法。
__gt大于用于查找字段大于特定值的记录Book.objects.filter(price__gt=10)
__gte大于等于Book.objects.filter(price__gte=10)
__lt小于

用于查找字段小于特定值的记录。

Book.objects.filter(price__lt=10)

__lte小于等于

用于查找字段小于等于特定值的记录。

Book.objects.filter(price__lte=10)

__in在某个列表内

你想要获取所有作者在列表中的书籍,你可以使用__in这将返回一个QuerySet,其中包含了所有作者为 '小强' 或 '小龙' 的书籍。

authors = ['小强', '小龙']
books = Book.objects.filter(author__in=authors)

__contains包含

用于查找字段包含特定子字符串的记录。

Book.objects.filter(title__contains="Python")

__icontains不包含

用于查找字段不包含特定子字符串的记录。注意,
__icontains是不区分大小写的。

Book.objects.exclude(title__icontains="Python")

__startswith以...开始

用于查找字段以特定字符串开始的记录。

Book.objects.filter(title__startswith="Python")

__endswith以...结束

用于查找字段以特定字符串结束的记录。

Book.objects.filter(title__endswith="Book")

__exact精确匹配

用于查找字段等于特定值的记录。这与直接使用
=是等价的。

Book.objects.filter(title__exact="Python Cookbook")

__regex

__iregex
模糊匹配

用于使用正则表达式匹配字段的记录。
__regex
区分大小写,
__iregex
不区分大小写。

Book.objects.filter(title__iregex=r"Python.*")

__year日期字段的年份

假设你有一个Post模型,其中包含一个created_at字段,类型为DateTimeField。如果你想获取所有在2023年创建的帖子,你可以使用__year这将返回一个QuerySet。

posts=Post.objects.filter(created_at__year=2023)

__month日期字段的月份假设你有一个Sales模型,其中包含一个sale_date字段,类型为DateTimeField或DateField
。如果你想获取所有在6月份的销售记录,你可以使用__month操作符如下:这将返回一个QuerySet,其中包含了所有在6月份的销售记录。
from myapp.models import Sales
sales_in_june = Sales.objects.filter(sale_date__month=6)
__day日期字段的天数

假设你有一个Event模型,其中包含一个event_date字段,类型为DateTimeField或DateField。如果你想获取所有在15号发生的事件,你可以使用__day
操作符如下:这将返回一个QuerySet,其中包含了所有在每个月的15号发生的事件。

from myapp.models import Event
events_on_15th = Event.objects.filter(event_date__day=15)

__week_day获取指定周日之前的数据假设你有一个LogEntry模型,其中包含一个timestamp字段,类型为DateTimeField。如果你想获取所有在星期五发生的日志条目,你可以使用__week_day操作符如下:这将返回一个QuerySet,其中包含了所有在星期五发生的日志条目。请注意,Django中的星期几是以1开始的,即1表示星期一,7表示星期日。
from myapp.models import LogEntry
entries_on_friday = LogEntry.objects.filter(timestamp__week_day=5)
__hour获取指定区间小时的数据

假设你有一个ActivityLog模型,其中包含一个timestamp字段,类型为DateTimeField
。如果你想获取所有在上午10点到11点之间发生的活动记录,你可以使用__hour操作符如下:这将返回一个QuerySet,其中包含了所有在上午10点到11点之间发生的活动记录。

from myapp.models import ActivityLog
activities_in_morning = ActivityLog.objects.filter(timestamp__hour__gte=10, timestamp__hour__lt=11)

__minute获取指定区间分的数据

假设你有一个SystemLog模型,其中包含一个timestamp字段,类型为DateTimeField
。如果你想获取所有在下午2点30分到2点35分之间发生的系统日志记录,你可以使用
__minute操作符如下:这将返回一个QuerySet,其中包含了所有在下午2点30分到2点35分之间发生的系统日志记录。

from myapp.models import SystemLog
logs_in_time_window = SystemLog.objects.filter(timestamp__hour=14, timestamp__minute__gte=30, timestamp__minute__lt=35)

__second获取指定秒的数据

假设你有一个Trade模型,其中包含一个timestamp字段,类型为DateTimeField。如果你想获取所有在某个特定秒数内发生的交易记录,你可以使用__second操作符如下:这将返回一个QuerySet,其中包含了所有在10点30分15秒发生的交易记录。

from myapp.models import Trade
trades_in_second = Trade.objects.filter(timestamp__hour=10, timestamp__minute=30, timestamp__second=15)

&   ,   |
 
查询多个条件

使用Q对象,可以使用逻辑“与”(&)和“或”(|)操作符来组合多个查询条件

from django.db.models import Q
Book.objects.filter(Q(price__gt=10) & Q(title__icontains="Python"))
这些操作符可以组合使用,以创建非常复杂和精确的查询。

相关文章:

  • 北京网站建设多少钱?
  • 辽宁网页制作哪家好_网站建设
  • 高端品牌网站建设_汉中网站制作
  • 修复 Ubuntu 24.04 Dock 丢失应用程序图标
  • 数据结构--二叉树相关习题5(判断二叉树是否是完全二叉树 )
  • uniapp如何发送websocket请求
  • Python函数 之 变量
  • 前端导出pdf
  • Science Advances 仿生双模态触觉感知
  • c++ 多边形 xyz 数据 获取 中心点方法,线的中心点取中心值搞定 已解决
  • PMON的解读和开发
  • java通过poi-tl导出word实战详细步骤
  • 视频使用操作说明书-T80005系列视频编码器如何对接海康NVR硬盘录像机,包括T80005系列高清HDMI编码器、4K超高清HDMI编码器
  • git diff,stash,submodule,format-patch
  • 自定义波形图View,LayoutInflater动态加载控件保存为本地图片
  • 上传图片,base64改为文件流,并转给后端
  • QT 图片处理
  • C#的DllImport使用方法
  • 时间复杂度分析经典问题——最大子序列和
  • es6要点
  • HTTP那些事
  • JavaScript实现分页效果
  • Laravel 菜鸟晋级之路
  • LeetCode算法系列_0891_子序列宽度之和
  • Python代码面试必读 - Data Structures and Algorithms in Python
  • STAR法则
  • Unix命令
  • 多线程 start 和 run 方法到底有什么区别?
  • 开年巨制!千人千面回放技术让你“看到”Flutter用户侧问题
  • C# - 为值类型重定义相等性
  • UI设计初学者应该如何入门?
  • Unity3D - 异步加载游戏场景与异步加载游戏资源进度条 ...
  • ​2020 年大前端技术趋势解读
  • #APPINVENTOR学习记录
  • #gStore-weekly | gStore最新版本1.0之三角形计数函数的使用
  • #控制台大学课堂点名问题_课堂随机点名
  • #设计模式#4.6 Flyweight(享元) 对象结构型模式
  • #我与Java虚拟机的故事#连载10: 如何在阿里、腾讯、百度、及字节跳动等公司面试中脱颖而出...
  • (1)svelte 教程:hello world
  • (16)UiBot:智能化软件机器人(以头歌抓取课程数据为例)
  • (delphi11最新学习资料) Object Pascal 学习笔记---第8章第5节(封闭类和Final方法)
  • (html转换)StringEscapeUtils类的转义与反转义方法
  • (react踩过的坑)antd 如何同时获取一个select 的value和 label值
  • (附源码)springboot猪场管理系统 毕业设计 160901
  • (十)Flink Table API 和 SQL 基本概念
  • (十三)Flask之特殊装饰器详解
  • (文章复现)基于主从博弈的售电商多元零售套餐设计与多级市场购电策略
  • (一)Thymeleaf用法——Thymeleaf简介
  • (一一四)第九章编程练习
  • (原創) 博客園正式支援VHDL語法著色功能 (SOC) (VHDL)
  • (转)jQuery 基础
  • (转)创业的注意事项
  • (总结)Linux下的暴力密码在线破解工具Hydra详解
  • *上位机的定义
  • .NET / MSBuild 扩展编译时什么时候用 BeforeTargets / AfterTargets 什么时候用 DependsOnTargets?
  • .net core 使用js,.net core 使用javascript,在.net core项目中怎么使用javascript
  • .NET delegate 委托 、 Event 事件,接口回调
  • .Net中的设计模式——Factory Method模式