版权声明:本文为博主原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。
all():
- 返回一个queryset一个列表
- 返回符合条件的所有数据
在models.py文件里设置要查询的字段,返回的是字符串,所以要把非字符串的进行转换
全部查询、指定查询、遍历
get方法:
- 返回一个对象
- 返回结果有且只有一条,get后面的条件常用主键
filter 方法,类似于sql中的 where- 返回值: queryset
- 使用遍历或者下标提取属性的值
因为在models。py中返回的是name,所有打印的是name
first方法 和last 方法
first 返回一个对象,返回符合条件的第一条数据(对象)
first 返回一个对象,返回符合条件的最后一条数据(对象)
data = Person.objects.filter(name="zhangsan").first()
print (data.age)
data = Person.objects.filter(name="zhangsan").last()
print(data.age)
排序
#升序
# data = Person.objects.all().order_by('age')
# print(data)
#降序
data = Person.objects.all().order_by('-age')
print(data)
return HttpResponse('查询数据')
exclude() :返回一个quertset,查询集,包含了跟给定条件不符合的所有数据
返回除张三以为其他人的年龄:
reverse : 对查询结果反向排序 逆序
这个方法通常放在有排序的查询集 后面使用
扫描二维码关注公众号,回复:
7651507 查看本文章
Queryset
查询集,不是python列表,也叫结果集,表示从数据库中获取的一个对象集合
使用如下的方法的时候返回:
- all()
- filter()
- order_by()
- exclude()
- values 特殊的queryset
- 切片
特性:
- 惰性
- 创建好查询集之后不会立即执行,在使用的时候才会进行数据的查询,
- 缓存
- 使用一个查询集,第一次使用进行查询,然后将数据进行缓存,之后再使用该查询集不会再次发起查询,而是将查询到的结果缓存了下来
使用如下方法返回对象
-
get
-
first()
-
last()
# values queryset [duixiang,duixiang,duixiang] # 返回的是一个queryset 内容不是实例对象,而是具体数据的字典 data = Person.objects.filter(name="zhangsan").values() print (data) # count 返回的是符合当前条件的数据的条数 data = Person.objects.filter(name="zhangsan").count() print (data) # exists 返回一个 True或者Flase 判断是否存在 data = Person.objects.filter(name="libai").exists() print (data) # # 切片 data = Person.objects.order_by("id")[2:5] print (data)
双下划线查询:
# __lt 小于
data = Person.objects.filter(id__lt=3)
print (data)
# gt 大于
data = Person.objects.filter(id__gt=3)
print (data)
# gte 大于等于
data = Person.objects.filter(id__gte=3)
print (data)
# in 包含 select * from stu where id in (1,2,3,4);
data = Person.objects.filter(id__in = [1,2,3])
print (data)
# exclude 不包含
# range 范围
data = Person.objects.filter(id__range = [1,5])
print (data)
# startswith 像 like j% endswith 像 %j
data = Person.objects.filter(name__startswith="j")
print (data)
# endswith
# __contains 包含 大小写敏感
data = Person.objects.filter(name__contains="w")
print (data)
# __icontains 包含,大小写不敏感
data = Person.objects.filter(name__icontains="w")
print(data)