一、自定义管理器类,并实例化自己的管理器类
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})