组团学

模型继承

阅读 (202350)

一、继承普通模型类

  • 实现

    class Animal(models.Model): name = models.CharField(max_length=20) age = models.IntegerField() class Cat(Animal): weight = models.IntegerField() class Meta(): db_table = "cats" class Dog(Animal): height = models.IntegerField() class Meta(): db_table = "dogs"
  • 问题

    • 在父类中定义的属性,子类表中没有,通过生成额外的父类表,子类表中通过外键关联父类表中的数据
    • 效率低
  • 注意

    此方式不建议使用

二、继承抽象模型类

  • 原理

    通过元信息将父类抽象化

  • 实现

    class Animal(models.Model): name = models.CharField(max_length=20) age = models.IntegerField() class Meta(): #将模型抽象化 abstract = True class Cat(Animal): weight = models.IntegerField() class Meta(): db_table = "cats" class Dog(Animal): height = models.IntegerField() class Meta(): db_table = "dogs"
  • 父类模型抽象化的作用

    • 父类模型不会在数据库中生成对应的数据表
    • 将父类中的属性添加到子类表字段中
需要 登录 才可以提问哦