Django:单表查询之神奇的双下划线

发布时间 2023-07-02 09:48:59作者: 未来可期_Durant

一、单表查询中双下划线运用案例

models.Tb1.objects.filter(id__lt=10, id__gt=1) 、
#获取id大于1 且 小于10的值

models.Tb1.objects.filter(id__in=[11, 22, 33])
#获取id等于11、22、33的数据

models.Tb1.objects.exclude(id__in=[11, 22, 33]) # not in
models.Tb1.objects.filter(name__contains=“ven”) # 获取name字段包含"ven"的
models.Tb1.objects.filter(name__icontains=“ven”) # icontains i大小写不敏感
models.Tb1.objects.filter(id__range=[1, 3])
#id范围是1到3的,等价于SQL的bettwen and

类似的还有:startswith,istartswith, endswith, iendswith

date字段还可以:
models.Class.objects.filter(first_day__year=2017)

二、总结

(1)xx__lt : 小于
(2)xx__lte : 小于等于
(3)Xx__gt、xx__gte : 大于、大于等于。
(4)xx__in : 包含指定的内容。
(5)xx__range: 指定范围内的查找, 相当于 mysql中的 between… and…
(6)Xx__startswith、xx__endswith、xx__istartswith、xx__iendswith。
(7)xx__contains: 包含某个字符,xx__icontains: i 忽略大小写。
日期类型:xx__year、xx___month、xx__day。根据年月日进行匹配