可以在Django抽象模型中使用多重继承吗?

时间:2011-06-21 15:40:08

标签: django django-models

我有三个不同的抽象模型基类。 。 。我想在多重继承中使用它们,有点像Mixins。这有什么问题吗?

如,

class TaggableBase(models.Model):

. . .

    class Meta:
        abstract = True

class TimeStampedBase(models.Model):

. . .

    class Meta:
        abstract = True

class OrganizationalBase(models.Model):

. . .

    class Meta:
        abstract = True

class MyTimeStampedTaggableOrganizationalModel(OrganizationalBase, TimeStampedBase, TaggableBase):

. . . 

3 个答案:

答案 0 :(得分:10)

我一直用我的类和模型类来做这件事。在我看来,这是Python中最好的东西之一。

答案 1 :(得分:10)

如果您在班级中使用任何字段 ,请继承models.Model

否则Django将忽略这些字段(Python中的属性仍然存在,但DB中不会创建任何字段)。设置abstract = True以获得" mixin"喜欢的行为(即没有为mixin创建DB表,但是对于使用这些mixin的模型)。

如果您不使用任何字段,则可以继承object,以保持简单明了。

答案 2 :(得分:6)

听起来你想要做的事情,mixins确实是最合适的。一个简单的谷歌搜索将找到很多关于在python中实现mixins的文章,例如this one。我不确定多重继承是最好的方法,所以你可能想要探索所有其他选项。还有什么想法?