可能重复:
获取python类parent(s)

我有一个:

class Animal(models.Model):
    pass

class Cat(Aminal):
    pass

class StreetCat(Cat):
    pass

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

#1楼 票数:8 已采纳

你可以通过__base__获取python中的直接超类

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

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


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

  ask by Pickels translate from so

未解决问题?本站智能推荐:

2回复

Django模型的“部分继承”

我知道部分继承它是不可能的。 我需要为我的Django应用程序创建一个用户模型,因为我想使用Django中定义的User类。 但我不需要用户名字段,根据需要设置。 假设我从User继承到MyUser。 是否可以删除MyUser中的用户名属性。 即del MyUser.username
2回复

Django:“模型”子类继承

我最近决定学习Django框架,并且已经开始通过相同的官方Django教程进行学习。 官方教程中提供的用于创建模型的代码如下: 现在,代码非常简单。 但是,我很难理解正在定义的每个类模型中继承的“模型”子类的层次结构: Model类位于models目录中的什么位置? 我假设这是一个
1回复

迁移自Django继承的模型

我们在应用程序中使用从CustomFlatPage模型派生的django.FlatPage模型。 它可以正常工作,但是FlatPage在Django 1.9中进行了更改,从而触发了CustomFlatPage的迁移。 但我们希望进行一次干净的迁移,即makemigrations在1.8或1.
1回复

Django的模型继承

我有这样的课: 为什么我不能在子类中使用“定义”? 有办法可以做到吗? 更新:看起来这在Django中是不允许的,但是我仍在寻找解决此问题的方法。 在Django中-模型继承-是否允许您覆盖父模型的属性? 我的观点课: 词汇词典的一部分:
1回复

django模型的继承

我想要两种注册类型。 例如:雇员和雇主类型。 我想要两种不同的形式。 我覆盖 AbstractUser 并在我使用这个类之后(继承) 但是当我保存员工或雇主类时也创建了用户类。 当我只保存员工而不保存用户时,我可以这样做吗
1回复

Django模型继承查询

假设我在一个应用程序中有这个课程: 但是我不希望此类从models.Model继承,我希望其从我自己的自定义类继承,我们称其为“ BetterModel”。 多重继承在这种情况下不起作用,所以我不能这样做: 该应用还有其他功能吗?
1回复

Django模型继承

考虑我们有一个这样的模型 请注意,以上两个字段都定义了相同的内容,只是related_name有所不同。 我觉得这部分内容也可以以某种方式转移到class A ,只需更改子级中的related_name即可。 可以做到这一点,还是应该使用相同代码的副本使用不同的related_name
1回复

Django模型继承自不同的模型,每个模型都继承自一个类

我正在使用Django创建表单。 该表单的ModelForm建立在从基础模型继承的多个模型上。 模型的结构与此类似: 被继承 和.. 这包含在我的最高级别的模型(用于ModelForm的模型)中: 我可以在填写表格时采用这种方法,并避免ORM错误,因为我有重复的字段名称吗?