模型實例方法
- 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))