单表的查询
由于查询条件比较多,也是比较常用的,因此单独一小章节来介绍
一、查询操作(功能会比较多)
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
与小于字段__lt
def 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
忽视大小写以结尾匹配