QuerySet表示从数据库中查询到的结果,一般是一个集合。
queryset是查询集,就是传到服务器上的url里面的查询内容。Django会对查询返回的结果集QuerySet进行缓存,这是为了提高查询效率。也就是说,在你创建一个QuerySet对象的时候,Django并不会立即向数据库发出查询命令,只有在你需要用到这个QuerySet的时候才会这样做。
得到的QuerySet可以进行迭代和切片操作
QuerySet API 表示访问数据库的相关接口。
查询相关的API
1.get(**kwargs): 返回与所给的筛选条件相匹配的对象,返回结果有且只有一个,如果符合筛选条件的对象超过一个,就会抛出 MultipleObjectsReturned 异常, 如果没有找到符合筛选条件的对象,就会抛出 DoesNotExist 异常。
2.all(): 查询所有的结果。
3.filter(**kwargs): 包含了与所给的筛选条件相匹配的对象
>>> 类名.objects.filter(city = '北京') # 查询城市是北京的所有字段
4.exclude(**kwargs): 包含那些与所给筛选条件不匹配的对象
>>> 类名.objects.exclude(city = '北京') # 查询城市不是北京的所有字段,与上一个相反
5.order_by(*fields): 对查询结果排序
>>> 类名.objects.all().order_by('id') # 按照升序排序
>>> 类名.objects.all().order_by('-id') # 按照降序排序
6.reverse(): 对查询结果反向排序
>>> 类名.objectts.all().reverse() # 降序排序
7.distinct(): 从返回结果中剔除重复记录
>>> 类名.objects.all().values('id', 'name').distinct() # 得到字段的id和name信息,且重复字段只显示一次
8.values(*fields): 返回一个ValuesQuerySet(一个特殊的QuerySet), 运行后得到的并不是一系列model的实例化对象,而是一个可迭代的字典序列。
>>> 类名.objects.all().values('id', 'name') # 得到字段的id和name信息
9.values_list(*fields): 与values相似,只不过前者返回的结果是字典序列,而values_list()返回的结果是元组序列。
10.count(): 返回数据库中匹配查询(QuerySet)的对象数量
>>> 类名.objects.filter(sex = 0).count() # 统计性别编号是0的字段的数量
11.first():返回第一条记录,等价于[:1][0]
12.last(): 返回最后一条记录,等价于[::-1][0]
<span style="font-size:18px;">类名.objects.all().first()
类名.objects.all().last()
等价于
类名.objects.all()[1][0]
类名.objects.all()[::-1][0]</span>
13.exists(): 如果QuerySet包含有数据,就返回True,否则返回False
更多精彩内容请查看官方文档,里面有对应的例子:QuerySet API的官方文档
上面提到的带 * 号的参数,如果是一个的话表示的是可变参数,如果是两个的话,表示的是关键词参数,如果没有的话,则为默认参数
注意: 一个 * 号接收的是元组, 两个 * 号接收的是字典