打开APP
userphoto
未登录

开通VIP,畅享免费电子书等14项超值服

开通VIP
django的模型类管理器

模型实例方法

  • str():在将对象转换成字符串时会被调用。
  • save():将模型对象保存到数据表中,ORM框架会转换成对应的insert或update语句。
  • delete():将模型对象从数据表中删除,ORM框架会转换成对应的delete语句。

 

模型类的属性

属性objects:管理器,是Manager类型的对象,用于与数据库进行交互。

当没有为模型类定义管理器时,Django会为模型类生成一个名为objects的管理器,自定义管理器后,Django不再生成默认管理器objects。

 

管理器是Django的模型进行数据库操作的接口,Django应用的每个模型都拥有至少一个管理器。Django支持自定义管理器类,继承自models.Manager。

 

自定义管理器类主要用于两种情况:

  • 1.修改原始查询集,重写all()方法
  • 2.向管理器类中添加额外的方法,如向数据库中插入数据。

 

1.修改原始查询集,重写all()方法。

#图书管理器class BookInfoManager(models.Manager):    def all(self):        #默认查询未删除的图书信息        #调用父类的成员语法为:super().方法名        return super().all().filter(isDelete=False)

 

b)在模型类BookInfo中定义管理器

class BookInfo(models.Model):    ...    books = BookInfoManager()

 

2.在管理器类中定义创建对象的方法

当创建模型类对象时,django不会对数据库进行读写操作,调用save()方法才与数据库交互,进行insert或update操作,将数据保存到数据库中。如果模型类的属性比较多,逐个属性赋值很麻烦,推荐使用管理器

class BookInfoManager(models.Manager):    ...    #创建模型类,接收参数为属性赋值    def create_book(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        # 将数据插入进数据表        book.save()        return book

 

b)为模型类BookInfo定义管理器books语法如下

class BookInfo(models.Model):    ...    books = BookInfoManager()

 

c)调用语法如下:

调用:book=BookInfo.books.create_book("abc",date(1980,1,1))

 

本站仅提供存储服务,所有内容均由用户发布,如发现有害或侵权内容,请点击举报
打开APP,阅读全文并永久保存 查看更多类似文章
猜你喜欢
类似文章
【热】打开小程序,算一算2024你的财运
【Django-DRF】多年积累md笔记 0基础到高手. 第(3)篇:使用Django开发REST接口
related Field has invalid lookup: icontains 解决方法
Django的数据库详细操作
[Django]中建立数据库视图
Django database query: How to filter objects by date range?
django form 定义
更多类似文章 >>
生活服务
热点新闻
分享 收藏 导长图 关注 下载文章
绑定账号成功
后续可登录账号畅享VIP特权!
如果VIP功能使用有故障,
可点击这里联系客服!

联系客服