我有一个提供的数据库架构,我想为其创建一个Django应用程序。架构中的许多表共享一组通用列,例如name
和date_created
。这促使我创建一个包含这些列的抽象Standard_model
类,并从中继承相关模型。
不幸的是,有些表格的name
列有不同的max_length
。我试图为子类模型提供一种方法将max_length
值传递给抽象基类,但我正在绘制一个空白。
有什么想法吗?
class Standard_model(models.Model):
name = models.CharField(max_length=50)
date_created = models.DateTimeField()
class Meta:
abstract = True
class MyModel(Standard_model):
name = models.CharField(max_length=80) # Can't do this.
答案 0 :(得分:2)
不,你cannot override the name
field definition:
在普通的Python类继承中,允许孩子使用 用于覆盖父类的任何属性的类。在Django中,这个 不允许属于Field实例的属性(至少, 现在不行)。如果基类有一个名为author的字段,那么 无法在任何类中创建另一个名为author的模型字段 继承自该基类。
另见:
而且,仅供参考,根据model naming convention,它应该被称为StandardModel
。