Python--day69--单表查询之神奇的双下划线

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

 

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

复制代码
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大小写不敏感
 
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 import os
 2 
 3 if __name__ == '__main__':
 4     #加载Djang00项目的配置信息
 5     os.environ.setdefault("DJANGO_SETTINGS_MODULE", "ormday69.settings")
 6     #导入Django,并启动Django项目
 7     import django
 8     django.setup()
 9 
10     from app01 import models
11 
12 
13 
14 
15 #单表查询之神奇的双下划线
16     #查询id值大于1小于4的值
17     ret = models.Person.objects.filter(id__lt=4,id__gt=1)
18     print(ret)
19     #in
20     #查询id在[1,3,5,7]中的结果
21     ret = models.Person.objects.filter(id__in = [1,3,5,7])
22     print(ret)
23     ret = models.Person.objects.exclude(id__in=[1, 3, 5, 7])
24     print(ret)
25     #contains 字段包含指定值的
26     #icontains 忽略大小写包含指定值
27     ret = models.Person.objects.filter(name__contains="")
28     print(ret)
29     #range
30     #判断id值在哪个区间的SQL语句   between and 1<= <=3
31     ret = models.Person.objects.filter(id__range=[1,3])
32     print(ret)
33     #日期和事件段还可以有以下写法
34     ret =  models.Person.objects.filter(birthday__year=2000)
35     print(ret)
36     ret = models.Person.objects.filter(birthday__year=2000,birthday__month=5)
37     print(ret)

 

 

 

原文地址:https://www.cnblogs.com/xudj/p/10488641.html