Django:轻松为子类添加额外的管理器,仍然使用AbstractBase的默认管理器

时间:2009-07-27 15:37:17

标签: python django django-models

这个问题是关于Custom managers and model inheritance的最后一个例子。

我希望能够做类似以下的事情:

class ExtraManagerModel(models.Model):
# OtherManager class supplied by argument shall be set as manager here

    class Meta:
        abstract = True

class ChildC(AbstractBase, ExtraManagerModel(OtherManager)): # That doesn't work, something like that
    ...
    # Default manager is CustomManager, but OtherManager is
    # also available via the "extra_manager" attribute.

这样做的全部目的是我不想为每个覆盖的管理器编写ExtraManagerModel类,以保留父类的默认管理器(AbstractBase)。

任何想法如何实现这一目标?

1 个答案:

答案 0 :(得分:0)

我绝对不确定我理解你的问题。您的代码段似乎与其下方的评论相矛盾。

您的代码段看起来像您希望能够拥有不同的ExtraManagerModel类。如果是这种情况,您可以使用由ExtraManagerModel实现的抽象类,并继承childC类的那些类的抽象父类。

希望这有帮助。