美文网首页
Models and Databases 5.Managers

Models and Databases 5.Managers

作者: xncode | 来源:发表于2021-03-12 11:17 被阅读0次

    默认的Manager名称为objects
    如果在model中定义了类型为models.Manager的属性 则会替换

    自定义manager

    可以通过派生Manager来生成自定义Manager,添加额外的方法,添加或修改原始的manager的返回值

    添加额外的方法

    数据表级别的方法 如果想定义行级别的方法应该定义在model中
    额外的方法可以返回任意值

    改变初始的queryset

    可以重载get_queryset方法来控制
    可以在model中设置很多manager

    Default Manager

    Model._default_manager
    django认为在model中的第一个Manger是default manager
    也可在Meta中设置default_manager_name
    使用的时候做为_default_manager,这个对于三方扩展有用,避免objects被替换出错,不能假定使用的Model中有objects

    Base Manager

    Model._base_manager
    _base_manager,是在获取关联对象时使用,可通过Meta中设置base_manager_name(原因是Django需要获取到关联对象即使它被过滤掉而在default manager中不能获取)

    自定义queryset

    在自定义queryset中定义的方法,需要再model定义一个对应的使用的方法,通过get_queryset获得queryset,再在其上调用该方法

    通过queryset创建manager

    除了像上述的创建重复方法,可以通过

        people = PersonQuerySet.as_manager()
    

    会复制:公开方法、设置了queryset_only属性为False的方法

    Manager.from_queryset()

    自定义manager和model继承

    相关文章

      网友评论

          本文标题:Models and Databases 5.Managers

          本文链接:https://www.haomeiwen.com/subject/zqealctx.html