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))

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM