模型子类:覆盖CharField max_length

时间:2015-01-28 15:45:55

标签: python django django-models

我有一个提供的数据库架构,我想为其创建一个Django应用程序。架构中的许多表共享一组通用列,例如namedate_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.

1 个答案:

答案 0 :(得分:2)

不,你cannot override the name field definition

  

在普通的Python类继承中,允许孩子使用   用于覆盖父类的任何属性的类。在Django中,这个   不允许属于Field实例的属性(至少,   现在不行)。如果基类有一个名为author的字段,那么   无法在任何类中创建另一个名为author的模型字段   继承自该基类。

另见:

而且,仅供参考,根据model naming convention,它应该被称为StandardModel