django之管理器
知識
07-16
管理器Manager
管理器是Django的模型進行資料庫操作的介面,Django應用的每個模型類都擁有至少一個管理器。
我們在通過模型類的objects屬性提供的方法操作資料庫時,即是在使用一個管理器對象objects。當沒有為模型類定義管理器時,Django會為每一個模型類生成一個名為objects的管理器,它是models.Manager類的對象。
自定義管理器
我們可以自定義管理器,並應用到我們的模型類上。
注意:一旦為模型類指明自定義的過濾器後,Django不再生成默認管理對象objects。
自定義管理器類主要用於兩種情況:
1. 修改原始查詢集,重寫all()方法。
a)打開booktest/models.py文件,定義類BookInfoManager
- #圖書管理器
- class BookInfoManager(models.Manager):
- def all(self):
- #默認查詢未刪除的圖書信息
- #調用父類的成員語法為:super().方法名
- return super().filter(is_delete=False)
b)在模型類BookInfo中定義管理器
- class BookInfo(models.Model):
- ...
- books = BookInfoManager()
c)使用方法
BookInfo.books.all()
2. 在管理器類中補充定義新的方法
a)打開booktest/models.py文件,定義方法create。
- 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.is_delete = 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))
※SpringMVC工程的web.xml以及其他配置文件
※初始化git的初始化用戶信息
TAG:程序員小新人學習 |