当前位置: 首页 > 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忽略大小写地正则表达式匹配字段值。

http://www.dtcms.com/a/11353.html

相关文章:

  • A800显卡驱动安装(使用deb安装)
  • HTML5的新属性
  • 程序猿成长之路之数据挖掘篇——决策树分类算法(1)——信息熵和信息增益
  • 2024年,计算机相关专业还值得选择吗?
  • c语言移位运算超出类型所能表示的范围告警
  • 第五章重采样方法
  • 2024 年解锁 Android 手机的 7 种简便方法
  • AI音乐大模型时代:版权归属与创意产业的新生长点
  • Flask-OAuthlib
  • 6月27日云技术研讨会 | 中央集中架构新车型功能和网络测试解决方案
  • 2024年保安职业资格考试试题分享
  • 070304负反馈放大电路增益的一般表达式对放大电路的影响
  • python+unity手势控制地球大小
  • 【Linux】 yum学习
  • Android的自启动
  • 什么是微分和导数?
  • SpringCloud-OpenFeign基础
  • go的context总结
  • 汽车IVI中控开发入门及进阶(二十七):车载摄像头vehicle camera
  • 区块链2024
  • 技术干货|如何快速提升SNMP监控性能
  • 揭秘古代手术工具与技术:从中国起源的医疗奇迹
  • 板凳------56.Linux/Unix 系统编程手册(下) -- SOCKET 介绍
  • [C#] opencvsharp对Mat数据进行序列化或者反序列化以及格式化输出
  • Linux常用命令(17)—pastesortcomm命令(有相关截图)
  • ES6(ECMAScript 6.0) 新特性
  • 如何将 ChatGPT 集成到你的应用中
  • mysql数据库中给表创建数据
  • 靠3个字寻求机会,情商不够,别勉强自己
  • Aquila-Med LLM:开创性的全流程开源医疗语言模型