单表的查询
由于查询条件比较多,也是比较常用的,因此单独一小章节来介绍
一、查询操作(功能会比较多)
1、根据
id来查询,返回一个对象def test(request): result = StudentModal.objects.get(pk=1) # result = StudentModal.objects.get(name='哈哈') print(result.name) return HttpResponse('ok')2、使用
all()查询全部数据def test(request): result = StudentModal.objects.all() print(result) return HttpResponse('ok')3、使用
first()基于全部查询的数据中取第一个(同样也有last()函数)def test(request): result = StudentModal.objects.all().first() return HttpResponse('ok')4、由于使用
all()查询的结果是QuerySet数据类型,类似list可以使用切片操作def test(request): result = StudentModal.objects.all()[0] print(type(result)) print(result) return HttpResponse('ok')5、使用
filter(字段='值')函数过滤数据def test(request): result = StudentModal.objects.filter(name='张三') print(type(result)) print(result) return HttpResponse('ok')6、
values()的使用,返回的是一个QuerySet类型,里面是字典上面我们没有使用
values()的时候查询语句编译为SQL语句是select * from 表名使用values('字段1', '字段2'...),如果编译SQL语句是select 字段1,字段2...from 表def test(request): result = StudentModal.objects.filter(name='张三').values('name', 'age') print(type(result)) print(result) return HttpResponse('ok')7、
values_list()的使用,返回的是一个QuerySet类型,里面是元祖def test(request): result = StudentModal.objects.filter(name='张三').values_list('name', 'age') print(type(result)) print(result) return HttpResponse('ok')8、使用
order_by('排序字段')排序(默认是升序,也没有降序的)def test(request): result = StudentModal.objects.all().order_by('age').values('name', 'age') print(type(result)) print(result) return HttpResponse('ok')9、使用
reverse()来降序排列数据def test(request): result = StudentModal.objects.all().order_by('age').values('name', 'age').reverse() print(type(result)) print(result) return HttpResponse('ok')10、使用
distinct('字段')过滤重复字段def test(request): result = StudentModal.objects.all().order_by('age').values('name', 'age').reverse().distinct('name') print(type(result)) print(result) return HttpResponse('ok')11、
count()计数def test(request): result = StudentModal.objects.all().count() print(type(result)) print(result) return HttpResponse('ok')12、
first()和last()的使用,返回一个对象def test(request): result = StudentModal.objects.first() print(type(result)) print(result) return HttpResponse('ok')13、
exclude()不包含def test(request): result = StudentModal.objects.exclude(name='张三').values('name', 'age') print(type(result)) print(result) return HttpResponse('ok')
二、双下划线(__)的使用户
所谓的双下划线是指
字段__属性
1、大于
字段__gt与小于字段__ltdef test(request): result = StudentModal.objects.filter(age__gt=15, age__lt=100).values('name', 'age') print(type(result)) print(result) return HttpResponse('ok')2、大于等于
字段__gte与小于等于字段__lte的使用3、包含
字段__contains区分大小写def test(request): result = StudentModal.objects.filter(name__contains='张').values('name', 'age') print(type(result)) print(result) return HttpResponse('ok')4、包含
字段__icontains不区分大小写5、
字段__in=[]的使用(只能是里面几个值)def test(request): result = StudentModal.objects.exclude(age__in=[18, 20]).values('name', 'age') print(type(result)) print(result) return HttpResponse('ok')6、
字段__range=[]的使用,表示一个范围,注意与in区别def test(request): result = StudentModal.objects.exclude(age__range=[20, 200]).values('name', 'age') print(type(result)) print(result) return HttpResponse('ok')7、
startswith以书面开头匹配def test(request): result = StudentModal.objects.filter(name__startswith='张').values('name', 'age') print(type(result)) print(result) return HttpResponse('ok')8、
istartswith忽视大小写的开头匹配- 9、
endswith以什么结尾匹配 - 10、
iendswith忽视大小写以结尾匹配