一,什麼是模型管理器對象?
前面我們講到了django的模型類的使用,當我們對模型類進行查詢時使用類名.objects.all()
獲取此模型類下的所有數據的
那麼爲什麼要使用.objects呢?
因爲objects是django自動生成的管理器對象,通過這個對象可以實現對數據的查詢
objects是models.manager 類的一個對象,我們可以自定義這個對象,自定義後系統就不在爲我們自動生成
二,創建自己的管理器對象
在應用的models.py 中進行創建:book=models.Manager()
注意新建哪個類的管理器對象就需要在哪個類中寫
此時我們再用objects進行查詢就會報錯:(注意更改manage.py文件後需要quit();shell再重新進入)
因爲我們自定義對象後系統就不會自動爲我們生成objects對象
但是此時可以用我們寫的book對象進行操作
三,繼承Manager的類的重寫
我們可以寫一個繼承manager類實現我們自己 的一些操作:
新建:
from django.db import models
#設計和表模型類的數據
# Create your models here.
class BookInfoManager(models.Manager): #繼承models.Manager
def all(self): #重寫all方法
books=super(BookInfoManager, self).all() #調用父類的all方法(super爲父類)
book=books.filter(id=2) #獲得id爲2的
return book
在BookInfo類裏面新建BookInfoManager的對象:
objects=BookInfoManager()
退出shell再重新進入執行objects.all():
from booktest.models import BookInfo
BookInfo.objects.all()
可以發現此時只得到了id爲2
的數據實現了數據的過濾
同時也可以在繼承類中寫自己的方法,實現自己需要的功能
三,模型管理器對象和模型類的關係
模型類是對數據庫文件進行插入操作,通過模型管理器對象進行查詢,我們對模型管理器類進行重寫,實現數據的過濾或者一些特定的功能