Django:如何获得模型继承的模型?

2024-10-01 13:38:30 发布

您现在位置:Python中文网/ 问答频道 /正文

Possible Duplicate:
get python class parent(s)

我有一个:

class Animal(models.Model):
    pass

class Cat(Aminal):
    pass

class StreetCat(Cat):
    pass

如何找出模型继承的模型?在


Tags: 模型getmodelmodelspassclasscatparent
1条回答
网友
1楼 · 发布于 2024-10-01 13:38:30

您可以通过__base__获得python中的直接超类

>>> StreetCat.__base__ is Cat
>>> True

如果您有多个基类,__bases__将得到所有父类的元组class Foo(A, B)


由于OP而更新:以下django方法不检索抽象基类,因为从技术上讲,这些方法是存储外键的内部使用方法,这些外键将每个继承的模型绑定到它们的父级。请注意!在

python继承的一些方法也间接地为一些超类的方法提供了直接的方法。在

^{pr2}$

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

相关问题 更多 >