大于: __gt
小于: __lt
大于等于: __gte
小于等于: __lte
- res = models.User.objects.filter(age__gt=20)
- print(res) # 年龄大于20
- res1 = models.User.objects.filter(age__lt=30)
- print(res) # 年龄小于30
- res2 = models.User.objects.filter(age__gte=19)
- print(res2) # 年龄大于等于19
- res3 = models.User.objects.filter(age__lte=30)
1. in 对应于 MySQL 中的 in 操作,可以接受数组、元组等类型数据作为参数
2. 字符串也可以作为参数,但是转义后的 SQL 的意思不太一样
3. in 操作也可以用于子查询动态的获取列表信息:
4. 没有指定字段,所以是默认搜索 id 的值
- # 数组
- Blog.objects.filter(id__in=[1,2,3])
-
- # 字符串
- Blog.objects.filter(name__in="abc")
-
- # in 操作也可以用于子查询动态的获取列表信息
- inner_qs = Blog.objects.filter(name__contains='hunter')
- Entry.objects.filter(blog__in=inner_qs)
-
-
- # 默认是id
- Entry.objects.filter(blog__name__in=inner_qs)
# 关键字:__range=[]
res = models.User.objects.filter(age__range=[19,40])
# 关键字:
__contain='' 区分大小写
__icontain='' 不区分大小写
-
- res = models.User.objects.filter(name__contains='k')
-
- res2 = models.User.objects.filter(name__icontains='k')
以什么开始:startswith,istartswith,
以什么结尾:endswith, iendswith,
istartswith,iendswith:大小写是不敏感的
- # 查询名字以s开头的数据
- res = models.User.objects.filter(name__startswith='s')
- print(res)
- # 查询名字以k结束的数据
- res = models.User.objects.filter(name__endswith='k')
- 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 是小时
场景:按日期取数据
-
- res = models.User.objects.filter(register_time__month='01')
- print(res)
- res1= models.User.objects.filter(register_time__day='02')
- print(res1)
- res2= models.User.objects.filter(register_time__week_day='02')
- print(res2)
- res3 = models.User.objects.filter(register_time__year='2022')
- print(res3)
- res4 = models.User.objects.filter(register_time__year='2022',register_time__month='02')
- print(res4)
- year
- Entry.objects.filter(pub_date__year=2005)
- Entry.objects.filter(pub_date__year__gte=2005)
-
- month
- Entry.objects.filter(pub_date__month=12)
- Entry.objects.filter(pub_date__month__gte=6)
-
- day
- Entry.objects.filter(pub_date__day=3)
- Entry.objects.filter(pub_date__day__gte=3)
-
- week_day
- Entry.objects.filter(pub_date__week_day=2)
- Entry.objects.filter(pub_date__week_day__gte=2)
-
- hour
- Event.objects.filter(timestamp__hour=23)
- Event.objects.filter(time__hour=5)
- Event.objects.filter(timestamp__hour__gte=12)
-
- minute
- Event.objects.filter(timestamp__minute=29)
- Event.objects.filter(time__minute=46)
- Event.objects.filter(timestamp__minute__gte=29)
-
- second
- Event.objects.filter(timestamp__second=31)
- Event.objects.filter(time__second=2)
- Event.objects.filter(timestamp__second__gte=31)
- # 查看所有第二季度的数据
- Entry.objects.filter(pub_date__quarter=2)
-
- # 一年有 52 个周,如果想获取周数为第几个的话,可以如此操作:
- Entry.objects.filter(pub_date__week=2)
-
- # hour 是小时,与上面的用法同:
- TestModel.objects.filter(created_time__hour=9)
判断是否为空
Entry.objects.filter(pub_date__isnull=True)
models.Tb1.objects.all()[10:20]
- Entry.objects.get(title__regex=r'^(An?|The) +')
- Entry.objects.get(title__iregex=r'^(an?|the) +')