Django objects.all() ,objects.get() ,objects.filter()之间的区别

4 篇文章 0 订阅
3 篇文章 0 订阅

Django objects.all() ,objects.get() ,objects.filter()之间的区别

1、ret=UserInfo.objects.all()

  • all返回的是QuerySet对象,程序并没有真的在数据库中执行SQL语句查询数据,但支持迭代,使用for循环可以获取数据。

2、ret=UserInfo.objects.get(id=‘1’)

  • get返回的是Model对象,类型为列表,说明使用get方法会直接执行sql语句获取数据

3、ret=UserInfo.objects.filter()

  • filter和get类似,但支持更强大的查询功能补充:条件选取querySet的时候,filter表示=,exclude表示!=。

4、我的总结

以上三点都是copy网上某一个博主的,但是到底谁是作者已经不得而知了,大家都是copy,看的我真的人麻了…

一搜五六七个点进去一看一毛一样的!而且他的说法有一点问题,大家也照搬。

对于前两条是没有疑问的,主要就是最后这个objects.filter(),是有着本质不同的:

以下是我打印的实例:

代码

user = Userinfo.objects.all()
print(user)
print(type(user))
user_1 = Userinfo.objects.get(Open_Id=openid)
print(user_1)
print(type(user_1))
user_2 = Userinfo.objects.filter(Open_Id=openid)
print(user_2)
print(type(user_2))

运行结果:

很明显objects.all()objects.filter()都是QuerySet对象,而objects.get()Model对象,不能说filter和get类似,很多新手就会误会,两个当同样的效果用。只是说他俩都是条件查询罢了,这点比较类似还行。

而具体QuerySet对象和Model对象的不同我目前就知道:

  • Model对象是你运行到就立马执行SQL查询,而QuerySet对象是你真正调用到他的时候才会去执行SQL查询
  • Model对象可以这样用而QuerySet对象不行:
user = Userinfo.objects.get(Open_Id=openid)
user.open_id = openid # 对数据库的数据直接进行覆盖
user.username = username
user.save()

以上就是我对Django objects.all() ,objects.get() ,objects.filter()之间的区别的理解,如有不对还请帮忙指正,谢谢!

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值