一、必知必会13条
1、all()
查询所有queryset 类似于列表
2、filter()
带有过滤条件的查询,结果为queryset数据类型
3、get()
直接拿数据对象,但是条件不存在直接报错
4、first()
拿queryset里面的第一个元素
5、last()
拿queryset里面的最后元素
6、values()
可以指定获取的数据字段 列表套字典
res = models.User.objects.values('name')
print(res) # <QuerySet [{'name': 'steven'}, {'name': 'baby'}]>
7、values_list()
列表套元祖
res = models.User.objects.values_list('name','age')
print(res) # <QuerySet [('steven', 18), ('baby', 20)]>
print(res.query) # 查看内部封装的sql语句
''' 上述查看sql语句的方式,只能用于queryset对象,只有queryset对象才能点击query查看内部的sql语句 '''
8、distinct()
去重
res = models.User.objects.values('name','age').distinct()
print(res)
''' 去重一定要是一模一样的数据,如果带有主键那么肯定不一样,往后的查询中一定不要忽略主键 '''
9、order_by()
res = models.User.objects.order_by('age') # 默认升序
res = models.User.objects.order_by('-age') # 降序 print(res)
10、reverse()
反转的前提是数据已经排序了
res = models.User.objects.order_by('age').reverse() print(res)
11、count()
统计当前数据的个数
res = models.User.objects.count()
print(res)
12、exclude()
排除在外
res= models.User.objects.exclude(name='steven') print(res)
13、exists()
基本用不到,数据本身就自带布尔值,返回布尔值
res = models.User.objects.filter(pk=4).exists()
print(res) # True
二、按返回值划分
1、返回QuerySet对象的方法有
all()
filter()
exclude()
order_by()
reverse()
distinct()
特殊的QuerySet
values() 返回一个可迭代的字典序列
values_list() 返回一个可迭代的元祖序列
2、返回具体对象的
get()
first()
last()
3、返回布尔值的方法
exists()
4、返回数字的方法
count()
参考博客:
https://blog.csdn.net/weixin_51730169/article/details/110735344