python - Django:如何获取模型继承的模型?

标签 python django

<分区>

Possible Duplicate:
get python class parent(s)

我有一个:

class Animal(models.Model):
    pass

class Cat(Aminal):
    pass

class StreetCat(Cat):
    pass

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

最佳答案

可以通过__base__获取python中的直接父类(super class)

>>> StreetCat.__base__ is Cat
>>> True
如果您有多个基类 class Foo(A, B)

__bases__ 将为您提供所有父类的元组


感谢 OP 的更新:以下 django 方法不检索抽象基类,因为从技术上讲,这些是用于存储将每个继承模型与其父模型联系起来的外键的内部使用方法。注意!

Django 还间接地为继承的模型提供了一些帮助器,它们是纯 python 方法遍历父类(super class)的快捷方式。

>>> 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

关于python - Django:如何获取模型继承的模型?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5278316/

相关文章:

python - 有没有办法为基于平台的 Python 应用程序提供条件 requirements.txt 文件?

python - 如何按时间对项目(从文件中读取)进行分组和计数?

python - 训练多输出 keras 模型

python - Django 休息 : serializer field that isn't a model field

python - PyVmomi 添加网卡与未连接的 dvs ('config.distributedVirtualSwitch' 未设置)

python - Google App Engine 计数器

Python: "import JSON... json.loads(request.body)"2.7->3.4

Elastic Beanstalk 上的 Django "requirements.txt"无效

python - django:将每个用户的数据分开

python - 模块未找到错误: No module named 'django.config' using celery and rabbitmq