1.进入django shell
2.导入类,查询objects类型
3.在BookInfo里面加入管理器类对象,重新进入shell
book=models.manager.Manager()
4.用BookInfo.objects.all()会报错,用BookInfo.book.all()则正常,定义了管理器类以后,django就不产生默认的objects
5.添加自定义管理器类
class BookInfoManager(models.manager.Manager):
def all(self):
books = super().all()
#对数据进行过滤
books= books.filter(isDelete=False)
return books;
6.在BookInfo类中增加管理器类对象
#自定义管理器类
objects= BookInfoManager()
7.通过PowerCell将最后一条数据的isDelete改为1
8.在终端中重新进入shell,并查询所有数据,就会过滤掉isDelete=1的数据
9.在BookInfo类中增加类方法
@classmethod
def create_book(cls, btitle, bpub_date):
obj = cls()
obj.btitle = btitle
obj.bpub_date = bpub_date
obj.save()
return obj
10.重新进入shell,通过下面的命令就可以添加数据
11.模型类只是对应表中的数据,一般把CRUD放在管理器类中,删除上面的类方法,将其添加到管理器类中
#封装函数:操作模型类对应的数据表
def create_book(self, btitle, bpub_date):
obj = BookInfo()
obj.btitle = btitle
obj.bpub_date = bpub_date
obj.save()
return obj
12.重新进入shell,通过管理器类来增加数据
13.其实管理器类已经封装了CRUD方法,但必须按定位参数来传输
14.管理器类里面有个model属性,它返回的就是模型类
15.修改CRUD方法,这样如果模型名变了,CRUD方法不用改变
def create_book(self, btitle, bpub_date):
#获取self对应的模型类
#model_class =self.model
obj = self.model()
obj.btitle = btitle
obj.bpub_date = bpub_date
obj.save()
return obj