我有一个:
class Animal(models.Model):
pass
class Cat(Aminal):
pass
class StreetCat(Cat):
pass
如何找出模型继承的模型?
答案 0 :(得分:8)
您可以通过__base__
>>> StreetCat.__base__ is Cat
>>> True
如果您有多个基类__bases__
, class Foo(A, B)
将为您提供所有父类的元组
感谢OP更新:以下django方法不检索抽象基类,因为从技术上讲,这些是用于存储将每个继承模型绑定到其父项的外键的内部使用方法。请注意!
Django还间接为继承模型提供了一些帮助,这些模型是遍历超类的纯python方法的快捷方式。
>>> StreetCat._meta.get_parent_list()
[Out] : Set([Class Animal, Class Cat])
InheritedClass.parents
是所有父母的有序字典,因此如果您愿意,以下内容可以帮助获得最高父母:
>>> StreetCat._meta.parents.keys()[-1]
你也可以使用非django相关的方法,比如
>>> StreetCat.__mro__[-3]
# once you know that BaseModel is an Object, and since all defined models subclass
# the BaseModel, [-3] is the first class that subclasses models.Model