booktest-8 管理器對象

1.進入django shell

2.導入類,查詢objects類型

3.在BookInfo裏面加入管理器類對象,重新進入shell

book=models.manager.Manager()

4.用BookInfo.objects.all()會報錯,用BookInfo.book.all()則正常,定義了管理器類以後,django就不產生默認的objects

5.添加自定義管理器類

class BookInfoManager(models.manager.Manager):
    def all(self):
        books = super().all()
        #對數據進行過濾
        books= books.filter(isDelete=False)
        return books;

 6.在BookInfo類中增加管理器類對象

 #自定義管理器類
    objects= BookInfoManager()

7.通過PowerCell將最後一條數據的isDelete改爲1

8.在終端中重新進入shell,並查詢所有數據,就會過濾掉isDelete=1的數據

9.在BookInfo類中增加類方法

  @classmethod
    def create_book(cls, btitle, bpub_date):
        obj = cls()
        obj.btitle = btitle
        obj.bpub_date = bpub_date
        obj.save()
        return obj

10.重新進入shell,通過下面的命令就可以添加數據

11.模型類只是對應表中的數據,一般把CRUD放在管理器類中,刪除上面的類方法,將其添加到管理器類中

 #封裝函數:操作模型類對應的數據表
    def create_book(self, btitle, bpub_date):
        obj = BookInfo()
        obj.btitle = btitle
        obj.bpub_date = bpub_date
        obj.save()
        return obj

12.重新進入shell,通過管理器類來增加數據

13.其實管理器類已經封裝了CRUD方法,但必須按定位參數來傳輸

 

14.管理器類裏面有個model屬性,它返回的就是模型類

15.修改CRUD方法,這樣如果模型名變了,CRUD方法不用改變

    def create_book(self, btitle, bpub_date):
        #獲取self對應的模型類
        #model_class =self.model
        obj = self.model()
        obj.btitle = btitle
        obj.bpub_date = bpub_date
        obj.save()
        return obj

 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章