Python 如何在Django中以编程方式获取模型的管理器实例
我在模型中添加了一个自定义管理器,如下所示:Python 如何在Django中以编程方式获取模型的管理器实例,python,django,django-models,django-managers,Python,Django,Django Models,Django Managers,我在模型中添加了一个自定义管理器,如下所示: class StandardManagerModel(models.Model): pass class PublishableManager(models.Manager): pass class Publishable(models.Model): published_objects = PublishableManager() 这将从模型中删除默认的.objects管理器。如何检索模型类中声明的默认管理器?我想要一
class StandardManagerModel(models.Model):
pass
class PublishableManager(models.Manager):
pass
class Publishable(models.Model):
published_objects = PublishableManager()
这将从模型中删除默认的.objects
管理器。如何检索模型类中声明的默认管理器?我想要一个函数,如get\u default\u manager()
:
从
如果使用自定义管理器对象,请注意,第一个管理器Django遇到的对象(,按照它们在模型中定义的顺序)具有特殊状态。Django将类中定义的第一个管理器解释为“默认”管理器,Django的几个部分(包括dumpdata)将专门为该模型使用该管理器。因此,在选择默认管理器时要小心,以避免覆盖get_queryset()导致无法检索您想要使用的对象的情况
您还可以提供默认管理器
objects = models.Manager()
published_objects = PublishableManager()
从
如果使用自定义管理器对象,请注意,第一个管理器Django遇到的对象(,按照它们在模型中定义的顺序)具有特殊状态。Django将类中定义的第一个管理器解释为“默认”管理器,Django的几个部分(包括dumpdata)将专门为该模型使用该管理器。因此,在选择默认管理器时要小心,以避免覆盖get_queryset()导致无法检索您想要使用的对象的情况
您还可以提供默认管理器
objects = models.Manager()
published_objects = PublishableManager()
看起来你根本不需要函数。它存储为模型上的一个属性:
Model._default_manager
还有
模型。_base\u manager
,我只能假设,如果您不提供默认的管理器,它就是默认的管理器。看起来您根本不需要函数。它存储为模型上的一个属性:
Model._default_manager
还有
模型。_base\u manager
,我只能假设,如果您不提供默认的管理器,它就是默认的管理器。通常,如果您想这样做,您将通过替换对象来保持多态模型…类Publishable(models.Model):
\npublished\u objects=PublishableManager()
\nobjects=published\u objects
大多数情况下,如果您想这样做,您将通过替换对象来保持多态模型…class published(models.model):
\npublished\u objects=publishedablemanager()
\nobjects=published\u objects