Django的模型管理器
阿新 • • 發佈:2018-11-19
一、自定義管理器類,並例項化自己的管理器類
Django預設為每個模型類提供一個管理器objects,該管理器例項化了Manager,那我們就可以繼承該類Manager,然後例項化自己的管理類,擴充套件自己管理器的功能。
目的:在原有管理器的基礎上擴充套件自己管理器的功能(繼承)
注意:Django預設的管理器objects在任意模型類的檢視函式中都能使用,而模型類中自定義的管理器的使用範圍是該模型類的檢視函式,相當於充當該模型類的一個屬性。
#自定義管理器類 class MyManager(models.Manager): def get_queryset(self): #返回id大於1的查詢集 return super().get_queryset().filter(id__gt=1) #在模型類中例項化自定義的管理器類 class User(models.Model): #例項化管理器類,不再使用Django預設的管理器objects myManager = MyManager() #在檢視方法中,使用自己的管理器myManager def userlist(req): list = User.myManager.all() return render(req,'userlist.html',context={'data':list})