Django 从子模型覆盖父模型属性
我有下面的模型Django 从子模型覆盖父模型属性,django,django-models,Django,Django Models,我有下面的模型 class ModelParent(PolymorphicModel): company = models.CharField(max_length=50) ....... 还有模范儿童 class ModelChild(ModelParent) company = models.CharField(max_length=10, blank=True) ........... 如何使模型子级公司属性覆盖父级公司模型属性而不使父级抽象父级
class ModelParent(PolymorphicModel):
company = models.CharField(max_length=50)
.......
还有模范儿童
class ModelChild(ModelParent)
company = models.CharField(max_length=10, blank=True)
...........
如何使模型子级公司属性覆盖父级公司模型属性而不使父级抽象父级模型不幸的是,这没有抽象的父级模型
不允许字段名“隐藏”
在普通Python类继承中,允许子类重写父类中的任何属性。在Django中,这通常不允许用于模型字段。如果非抽象模型基类有一个名为author的字段,则不能在从该基类继承的任何类中创建另一个模型字段或定义名为author的属性
此限制不适用于从抽象模型继承的模型字段。这些字段可以被另一个字段或值覆盖,也可以通过设置field_name=None来删除
相反,建议只创建一个属性或重命名子模型的字段。您可以做的另一件事是删除父模型的“company”字段,并将其移动到所有子模型
class ModelChild(ModelParent)
child_company = models.CharField(max_length=10, blank=True)
...........
您必须这样理解它:Django将这样的模型建模为两个表:一个是
父表
表(与公司一起),一个是子表
表(那么它也应该有一个`公司?)。因此,在这里为它构造验证器(在Django级别)可能更好。