一,什么是模型管理器对象?
前面我们讲到了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
的数据实现了数据的过滤
同时也可以在继承类中写自己的方法,实现自己需要的功能
三,模型管理器对象和模型类的关系
模型类是对数据库文件进行插入操作,通过模型管理器对象进行查询,我们对模型管理器类进行重写,实现数据的过滤或者一些特定的功能