Django-ORM模型层语法之必知必会13条

发布时间 2023-07-09 22:03:41作者: 未来可期_Durant

一、必知必会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