【Django】模型层开发之创建并继承抽象模型类
开发系统时若在多个模型类中存在共同的数据项,那么可以将这些多次出现的数据项放在一个公共类中,使该类继承于models.Model类,而其他模型类继承于这个父类。但由于我们不需要这个公共类在运行时创建数据表,所以设置abstract
为True
,将该父类定义为抽象类。
如下,我们举了一个例子:在课程表中除了课程名之外还需要定义一个数据添加时间
数据项,除了课程表之外的其他表也都需要这个数据项,因此创建BaseModel抽象类包含该数据项,使其他需要该数据项的实体模型类继承于他。
-
创建父类模型
class BaseModel(models.Model): """ 用于存放多个模型共用的数据列,且不生成该类的数据表 """ add_time = models.DateTimeField(default=datetime.now, verbose_name="数据添加时间") class Meta: # 防止父类建表 abstract = True
-
继承该类
class Course(BaseModel): """ 课程类模型 """ name = models.CharField(max_length=50, verbose_name="课程名") class Meta: verbose_name = "课程信息" verbose_name_plural = verbose_name class __str__(self): return self.name # 在print(实例)的时候返回你指定的字符串