共计 634 个字符,预计需要花费 2 分钟才能阅读完成。
一、继承普通模型类
-
实现
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"
-
父类模型抽象化的作用
- 父类模型不会在数据库中生成对应的数据表
- 将父类中的属性添加到子类表字段中
正文完
星哥玩云-微信公众号