栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 软件开发 > 后端开发 > Python

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

Python 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

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

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()之间的区别的理解,如有不对还请帮忙指正,谢谢!

转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/942590.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号