更新时间:2022-08-24 来源:黑马程序员 浏览量:
管理器是Django的模型进行数据库操作的接口,Django应用的每个模型都拥有至少一个管理器Django支持自定义管理器类,继承自models.Manager,自定义管理器类主要用于两种情况:
1.修改原始查询集,重写get_queryset()方法
2.向管理器类中添加额外的方法,如创建对象
1.修改原始查询集,重写get_queryset()方法
打开booktest/models.py文件,定义类BookInfoManager
#图书管理器 class BookInfoManager(models.Manager): def get_queryset(self): #默认查询未删除的图书信息 #调用父类的成员语法为:super(子类型, self).成员 return super(BookInfoManager, self).get_queryset().filter(isDelete=False)
在模型类BookInfo中定义管理器
class BookInfo(models.Model): ... books = BookInfoManager()
2.在管理器类中定义创建对象的方法
当创建模型类对象时,django不会对数据库进行读写操作,调用save()方法才与数据库交互,进行insert或update操作,将数据保存到数据库中,如果模型类的属性比较多,逐个属性赋值很麻烦,推荐使用管理器方式。打开booktest/models.py文件,定义方法create。
class BookInfoManager(models.Manager): ... #创建模型类,接收参数为属性赋值 def create(self, title, pub_date): #创建模型类对象self.model可以获得模型类 book = self.model() book.btitle = title book.bpub_date = pub_date book.bread=0 book.bcommet=0 book.isDelete = False return book
为模型类BookInfo定义管理器books语法如下:
class BookInfo(models.Model): ... books = BookInfoManager()
调用语法如下:
调用:book=BookInfo.books.create_book("abc",date(1980,1,1)) 保存:book.save()
【AI设计】北京143期毕业仅36天,全员拿下高薪offer!黑马AI设计连续6期100%高薪就业
2025-09-19【跨境电商运营】深圳跨境电商运营毕业22个工作日,就业率91%+,最高薪资达13500元
2025-09-19【AI运维】郑州运维1期就业班,毕业14个工作日,班级93%同学已拿到Offer, 一线均薪资 1W+
2025-09-19【AI鸿蒙开发】上海校区AI鸿蒙开发4期5期,距离毕业21天,就业率91%,平均薪资14046元
2025-09-19【AI大模型开发-Python】毕业33个工作日,就业率已达到94.55%,班均薪资20763元
2025-09-19【AI智能应用开发-Java】毕业5个工作日就业率98.18%,最高薪资 17.5k*13薪,全班平均薪资9244元
2025-09-19