我已经阅读了几个线程,并且知道django可以有多个抽象类。但我看到的几乎所有样品都是......
class AbsOne(models.Model):
pass
class AbsTwo(models.Model):
pass
class AbsThree(AbsOne, AbsTwo):
pass
但如果我有类似的东西怎么办?
class AbsOne(models.Model):
pass
class AbsTwo(AbsOne): // this actually inheritance AbsOne
pass
class AbsThree(AbsOne): // this inheritance AbsOne
pass
如果我需要继承AbsTwo, AbsThree
,但这两个也是同一父母的继承,该怎么办。
class AbsFour(AbsTwo, AbsThree):
pass
这是否可行,没有任何冲突或额外的字段?
提前致谢。
答案 0 :(得分:1)
就像Python的子类化一样,Django模型也可以 从多个父模型继承。请记住普通的Python 名称解析规则适用。特定的第一个基类 名称(例如Meta)出现在将使用的名称中;例如, 这意味着如果多个父类包含一个Meta类,则只有 第一个将被使用,其他所有将被忽略。
https://docs.djangoproject.com/en/1.11/topics/db/models/#multiple-inheritance
它有可能,但它有一些限制,如(在父类和元类中覆盖字段)和Django ORM或类的模型方式在体系结构上有点不同于常规的python继承,请仔细阅读文档提及并试图保持简单。
...这个有用的主要用例是“混入”类:添加 每个继承的类的特定额外字段或方法 混合项。尽量保持继承层次结构简单 尽可能直截了当,这样你就不必费力去工作了 出于特定信息的来源
编辑:添加了另一个引用:)