[笔记] Model 层 QuerySet 的使用

  • Model作为MVC模式中的基础层(数据层)负责为整个系统提供数据。
  • 在Model层中,Django通过给Model增加一个objects属性来提供数据操作的接口。比如想要查询所有文章的数据,可以这么写:xxx.objects.all(),这样就能拿到QuerySet对象。这个对象包含了我们需要的数据,当我们用到他时,它会去DB中获取数据
  • 就是用到数据时才会去DB中查询,而不是执行xxx.objects.all()时去执行数据库查询语句的,原因是QuerySet要支持链式操作。如果每次执行都要查询数据库的话,会存在性能问题,因为你可能用不到你执行的代码,所以QuerySet是懒加载的
  • 链式调用:执行一个对象的方法之后得到的结果还是这个对象,这样可以接着执行对象的其他方法。例如:posts = Post.objexts.filter(status=1).filter(category_id=2)

常用的QuerySet接口

  • 支持链式调用的接口
    • all 接口,相当于SELECT * FROM table_name 语句,用于查询所有数据
    • filter 接口,根据条件过滤数据,常用的条件基本上是字段等于不等于大于小于。还有能改成LIKE查询的:Model.objects.filter(content__contains="条件")
    • exclude 接口,同filter,只是相反的逻辑
    • reverse 接口,把QuerySet中的结果倒序排列
    • distinct 接口,用来进行去重查询,产生 SELECT DISTINCT 这样的SQL查询
    • none 接口,返回空的QuerySet
  • 不支持链式调用的接口
    不支持链式调用的接口即返回值不是QuerySet的接口
    • get 接口,例如Post.objects.get(id=1)用于查询id为1的文章,存在则返回实例,不存在则抛出异常
    • create 接口,用来直接创建一个Model对象
    • get_or_create 接口,根据条件查找,如果没有查找到,就调用create调用
    • update_or_create 接口,同get_or_create,只是用来做更新操作
    • count 接口,返回QuerySet有多少条记录
    • latest 接口,返回最新的一条记录,需要在Meta中定义:get_latest_by = <用来排序的字段>
  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

_linbobo

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值