• orm双下滑线


    1.比较运算

    介绍

    • 大于: __gt

    • 小于: __lt

    • 大于等于: __gte

    • 小于等于: __lte

    举例

    1. res = models.User.objects.filter(age__gt=20)
    2. print(res) # 年龄大于20
    3. res1 = models.User.objects.filter(age__lt=30)
    4. print(res) # 年龄小于30
    5. res2 = models.User.objects.filter(age__gte=19)
    6. print(res2) # 年龄大于等于19
    7. res3 = models.User.objects.filter(age__lte=30)

    在某一数据集内

    介绍

    1. in 对应于 MySQL 中的 in 操作,可以接受数组、元组等类型数据作为参数

    2. 字符串也可以作为参数,但是转义后的 SQL 的意思不太一样

    3. in 操作也可以用于子查询动态的获取列表信息:

    4. 没有指定字段,所以是默认搜索 id 的值

    举例

    1. # 数组
    2. Blog.objects.filter(id__in=[1,2,3])
    3. # 字符串
    4. Blog.objects.filter(name__in="abc")
    5. # in 操作也可以用于子查询动态的获取列表信息
    6. inner_qs = Blog.objects.filter(name__contains='hunter')
    7. Entry.objects.filter(blog__in=inner_qs)
    8. # 默认是id
    9. Entry.objects.filter(blog__name__in=inner_qs)

    在某一范围内

    介绍

    # 关键字:__range=[]

    举例

    res = models.User.objects.filter(age__range=[19,40])
    

    模糊查询

    介绍

    # 关键字:

    __contain=''  区分大小写
    __icontain=''  不区分大小写

    举例

    1. res = models.User.objects.filter(name__contains='k')
    2. res2 = models.User.objects.filter(name__icontains='k')

    以什么开头/结尾

    介绍

    以什么开始:startswith,istartswith,

    以什么结尾:endswith, iendswith,

    istartswith,iendswith:大小写是不敏感的

    举例

    1. # 查询名字以s开头的数据
    2. res = models.User.objects.filter(name__startswith='s')
    3. print(res)
    4. # 查询名字以k结束的数据
    5. res = models.User.objects.filter(name__endswith='k')
    6. print(res)

    按照日期查询(data)

    介绍

    • __month='1' # 按照月份取

    • __year='2020' # 按照年份

    • __day='29' # 按照天筛选

    • __weekday='' # weekday 对应的是 周几,周日是1,周一是2,到周六是 7

    • week # 一年有 52 个周,如果想获取周数为第几个的话

    • quarter # quarter 是查询季度数据,一年一共四个季度,1月1日到3月31日,4月1日到6月30日,7月1日到9月30日,10月1日到12月31日

    • hour  # hour 是小时

    场景:按日期取数据

    举例

    1. res = models.User.objects.filter(register_time__month='01')
    2. print(res)
    3. res1= models.User.objects.filter(register_time__day='02')
    4. print(res1)
    5. res2= models.User.objects.filter(register_time__week_day='02')
    6. print(res2)
    7. res3 = models.User.objects.filter(register_time__year='2022')
    8. print(res3)
    9. res4 = models.User.objects.filter(register_time__year='2022',register_time__month='02')
    10. print(res4)
    1. year
    2. Entry.objects.filter(pub_date__year=2005)
    3. Entry.objects.filter(pub_date__year__gte=2005)
    4. month
    5. Entry.objects.filter(pub_date__month=12)
    6. Entry.objects.filter(pub_date__month__gte=6)
    7. day
    8. Entry.objects.filter(pub_date__day=3)
    9. Entry.objects.filter(pub_date__day__gte=3)
    10. week_day
    11. Entry.objects.filter(pub_date__week_day=2)
    12. Entry.objects.filter(pub_date__week_day__gte=2)
    13. hour
    14. Event.objects.filter(timestamp__hour=23)
    15. Event.objects.filter(time__hour=5)
    16. Event.objects.filter(timestamp__hour__gte=12)
    17. minute
    18. Event.objects.filter(timestamp__minute=29)
    19. Event.objects.filter(time__minute=46)
    20. Event.objects.filter(timestamp__minute__gte=29)
    21. second
    22. Event.objects.filter(timestamp__second=31)
    23. Event.objects.filter(time__second=2)
    24. Event.objects.filter(timestamp__second__gte=31)
    1. # 查看所有第二季度的数据
    2. Entry.objects.filter(pub_date__quarter=2)
    3. # 一年有 52 个周,如果想获取周数为第几个的话,可以如此操作:
    4. Entry.objects.filter(pub_date__week=2)
    5. # hour 是小时,与上面的用法同:
    6. TestModel.objects.filter(created_time__hour=9)

     isnull

    介绍

    判断是否为空

    举例 

    Entry.objects.filter(pub_date__isnull=True)

    limit 、offset

    models.Tb1.objects.all()[10:20]

    regex正则匹配,iregex 不区分大小写

    1. Entry.objects.get(title__regex=r'^(An?|The) +')
    2. Entry.objects.get(title__iregex=r'^(an?|the) +')

  • 相关阅读:
    Nginx证书管理
    OpenStack云平台部署
    服务器中毒的原因以及如何预防
    【科普】ARM架构
    fusion 360制作机械臂
    Android入门第42天-Android中的Service(IntentService)
    认识接口自动化测试
    智慧家——全家具功能
    联邦学习综述三
    如何学习运放实战设计?学这些精髓
  • 原文地址:https://blog.csdn.net/qq_52385631/article/details/126950870