第三方Django包中模型的抽象继承

时间:2015-07-21 19:10:24

标签: python django django-models

要在Django中进行抽象模型继承,我们放

class Meta:
    abstract = True
父模型中的

。这是否意味着从不具有此 Meta 语句的模型中抽象地继承是不可能的?具体来说,是否不可能从第三方包中现有模型中的模型中抽象地继承(除非我们更改该模型)?

这是一个澄清我要问的例子。让我们说我已经在项目的 INSTALLED_APPS 中安装了名为 djangofoo 的Django软件包。在 djangofoo.models 中,让我们说我们有

from django.db import models

class Person(models.Model):
    first_name = models.CharField(max_length=10)
    last_name = models.CharField(max_length=25)

我可以在我自己的应用程序中从 Person 进行子类化,如下所示

from djangofoo.models import Person

class MyPerson(Person):
    middle_initial = models.CharField(max_length=1)

然而,这是具体的继承。是否可以进行抽象继承?这是我正在寻找的那种魔法的虚构例子:

from djangofoo.models import Person

AbstractPerson = abstractify(Person)

class MyPerson(AbstractPerson):
    middle_initial = models.CharField(max_length=1)

当然,我可以在 djangofoo.models 中更改 Person 模型定义,以添加相应的 abstract = True 语句,但它会是因为显而易见的原因,最好不要这样做。

0 个答案:

没有答案