1. 程式人生 > >Django的模型管理器

Django的模型管理器

一、自定義管理器類,並例項化自己的管理器類

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