【Django】模型层开发之创建并继承抽象模型类

开发系统时若在多个模型类中存在共同的数据项,那么可以将这些多次出现的数据项放在一个公共类中,使该类继承于models.Model类,而其他模型类继承于这个父类。但由于我们不需要这个公共类在运行时创建数据表,所以设置abstractTrue,将该父类定义为抽象类。
如下,我们举了一个例子:在课程表中除了课程名之外还需要定义一个数据添加时间数据项,除了课程表之外的其他表也都需要这个数据项,因此创建BaseModel抽象类包含该数据项,使其他需要该数据项的实体模型类继承于他。

  1. 创建父类模型

    class BaseModel(models.Model):
        """
        用于存放多个模型共用的数据列,且不生成该类的数据表
        """
        add_time = models.DateTimeField(default=datetime.now, verbose_name="数据添加时间")
    
        class Meta:
            # 防止父类建表
            abstract = True
            
    
  2. 继承该类

    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(实例)的时候返回你指定的字符串
    
posted @ 2023-06-21 13:36  ccql  阅读(11)  评论(0编辑  收藏  举报  来源