要在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 语句,但它会是因为显而易见的原因,最好不要这样做。