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

[Django学习]查询过滤器(lookup types)

1.exact

exact用于精确匹配字段的值。适用于需要精确查找某个字段值的场景。
 

Book.objects.filter(title__exact='Harry Potter')

上面的查询会查找标题完全为“Harry Potter”的书籍。

2.iexact

iexact忽略大小写地精确匹配字段的值。适用于需要忽略大小写进行精确匹配的场景。

Book.objects.filter(title__iexact='harry potter')

这将查找标题在忽略大小写的情况下完全匹配“harry potter”的书籍。

3.contains

contains用于查找字段包含特定子字符串的记录,适用于部分匹配查询。
 

Book.objects.filter(title__contains='Harry')

查找标题包含“Harry”的书籍。

4.icontains

icontains忽略大小写查找字段包含特定子字符串的记录。

Book.objects.filter(title__icontains='harry')

5.startswith

查找以特定字符串开头的记录。
 

Book.objects.filter(title__startswith='Harry')

6.istartswith

忽略大小写

Book.objects.filter(title__istartswith='harry')

7. endswith

endswith用于查找以特定字符串结尾的记录。


8. iendswith

iendswith忽略大小写地查找以特定字符串结尾的记录。


9. in

查找字段值在给定列表中的记录,适用于批量匹配查询(数组)。
 

Book.objects.filter(title__in=['Harry Potter', 'The Hobbit'])

只要标题是在给定的数组中,就会把这条记录拿出来


10. gt

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

Book.objects.filter(price__gt=5)

查找价格严格大于5块钱的书

11. gte

查找字段值大于或等于特定值的记录。
 

12./13. lt/lte

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

14. range

range用于查找字段值在特定范围内的记录。
 

Book.objects.filter(price__range=(1, 10))

查找价格在1到10元的书本,range可以和上文的gt/gte、lt/lte搭配使用,如下

        if datas.get("countFlag") == "on":if datas.get("count") == "1":query &= Q(counts__range=(0, 10))elif datas.get("count") == "2":query &= Q(counts__range=(10, 50))elif datas.get("count") == "3":query &= Q(counts__range=(50, 100))elif datas.get("count") == "4":query &= Q(counts__gte=100)


15. date

date用于精确匹配日期字段的值。
 

Book.objects.filter(publish_date__date='2022-01-01')


16. year

year用于匹配特定年份的日期字段。
 

Book.objects.filter(publish_date__year=2022)


17./18. month/day

用法同上

19. week_day

week_day用于匹配特定星期几的日期字段。注意:1代表星期天,2代表星期一,以此类推。
 

Book.objects.filter(publish_date__week_day=2)

这个语句查询发布日期是在周一的书本

20. isnull

查找字段值为空的记录。如下查找作者字段为空的书籍。
 

Book.objects.filter(author__isnull=True)


21. regex

正则表达式匹配字段值。
 

Book.objects.filter(title__regex=r'^Harry')

查找标题以“Harry”开头的书籍。

22. iregex

iregex忽略大小写地正则表达式匹配字段值。

相关文章:

  • SpringSecurity实战入门——授权
  • 【实战】Spring Cloud Stream 3.1+整合Kafka
  • Python学习路线
  • vue3父组件获取子组件的实例对象
  • Ollama部署大模型并安装WebUi
  • 抽象类和接口有什么区别?
  • reidis的内存回收和内存淘汰策略
  • Android C++系列:C++最佳实践2抽象类
  • Spring Boot 增删改查(mybatis-plus)
  • MSPM0G3507——PWM
  • Elasticsearch Range 查询:范围搜索
  • ARM32常见指令
  • JAVA学习笔记DAY11——Java 与 Spring框架发展
  • Scala 中的匿名函数
  • 探索数据结构:集合、线性结构、树状结构和图形结构
  • EOS是什么
  • extract-text-webpack-plugin用法
  • Java编程基础24——递归练习
  • Java基本数据类型之Number
  • Python_OOP
  • Python代码面试必读 - Data Structures and Algorithms in Python
  • SegmentFault 社区上线小程序开发频道,助力小程序开发者生态
  • Spark学习笔记之相关记录
  • ubuntu 下nginx安装 并支持https协议
  • 闭包,sync使用细节
  • 搞机器学习要哪些技能
  • 工作手记之html2canvas使用概述
  • 基于OpenResty的Lua Web框架lor0.0.2预览版发布
  • 如何编写一个可升级的智能合约
  • 使用API自动生成工具优化前端工作流
  • 小程序01:wepy框架整合iview webapp UI
  • 一些css基础学习笔记
  • 在Mac OS X上安装 Ruby运行环境
  • MPAndroidChart 教程:Y轴 YAxis
  • 宾利慕尚创始人典藏版国内首秀,2025年前实现全系车型电动化 | 2019上海车展 ...
  • 智能情侣枕Pillow Talk,倾听彼此的心跳
  • ​​​【收录 Hello 算法】9.4 小结
  • ​LeetCode解法汇总2670. 找出不同元素数目差数组
  • ‌分布式计算技术与复杂算法优化:‌现代数据处理的基石
  • #1014 : Trie树
  • #stm32整理(一)flash读写
  • #我与Java虚拟机的故事#连载05:Java虚拟机的修炼之道
  • (1) caustics\
  • (Redis使用系列) Springboot 实现Redis 同数据源动态切换db 八
  • (三)Kafka离线安装 - ZooKeeper开机自启
  • (三分钟)速览传统边缘检测算子
  • (一)Dubbo快速入门、介绍、使用
  • (自用)learnOpenGL学习总结-高级OpenGL-抗锯齿
  • (最优化理论与方法)第二章最优化所需基础知识-第三节:重要凸集举例
  • .desktop 桌面快捷_Linux桌面环境那么多,这几款优秀的任你选
  • .java 指数平滑_转载:二次指数平滑法求预测值的Java代码
  • .JPG图片,各种压缩率下的文件尺寸
  • .net core 的缓存方案
  • .NET教程 - 字符串 编码 正则表达式(String Encoding Regular Express)
  • .net专家(张羿专栏)