django学习笔记009-模型_模型管理器对象(重写objects类设计自己需要的功能)

一,什么是模型管理器对象?
前面我们讲到了django的模型类的使用,当我们对模型类进行查询时使用类名.objects.all()获取此模型类下的所有数据的
那么为什么要使用.objects呢?
在这里插入图片描述因为objects是django自动生成的管理器对象,通过这个对象可以实现对数据的查询
objects是models.manager 类的一个对象,我们可以自定义这个对象,自定义后系统就不在为我们自动生成
二,创建自己的管理器对象
在应用的models.py 中进行创建:book=models.Manager()
注意新建哪个类的管理器对象就需要在哪个类中写
在这里插入图片描述
此时我们再用objects进行查询就会报错:(注意更改manage.py文件后需要quit();shell再重新进入)

在这里插入图片描述
因为我们自定义对象后系统就不会自动为我们生成objects对象
但是此时可以用我们写的book对象进行操作
在这里插入图片描述
三,继承Manager的类的重写
我们可以写一个继承manager类实现我们自己 的一些操作:
新建:

from django.db import models
#设计和表模型类的数据
# Create your models here.
class BookInfoManager(models.Manager):  #继承models.Manager
    def all(self):  #重写all方法
        books=super(BookInfoManager, self).all()  #调用父类的all方法(super为父类)
        book=books.filter(id=2)  #获得id为2的
        return book
    

在这里插入图片描述
在BookInfo类里面新建BookInfoManager的对象:

 objects=BookInfoManager()

退出shell再重新进入执行objects.all():

 from booktest.models import BookInfo
BookInfo.objects.all()

可以发现此时只得到了id为2
的数据实现了数据的过滤
在这里插入图片描述
同时也可以在继承类中写自己的方法,实现自己需要的功能
三,模型管理器对象和模型类的关系
模型类是对数据库文件进行插入操作,通过模型管理器对象进行查询,我们对模型管理器类进行重写,实现数据的过滤或者一些特定的功能

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值