模型继承
阅读 (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"
-
父类模型抽象化的作用
- 父类模型不会在数据库中生成对应的数据表
- 将父类中的属性添加到子类表字段中
需要
登录
才可以提问哦
: