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

猜你喜欢

转载自blog.csdn.net/ryuhfxz/article/details/84197801
今日推荐