继承
模型之间的继承可以通过两种方式完成:
- 一个常见的抽象类(参见模型混合示例)
- 具有多个表的通用模型
多表继承将为公共字段创建一个表,为每个子模型示例创建一个表:
from django.db import models
class Place(models.Model):
name = models.CharField(max_length=50)
address = models.CharField(max_length=80)
class Restaurant(Place):
serves_hot_dogs = models.BooleanField(default=False)
serves_pizza = models.BooleanField(default=False)
将创建 2 个表,一个用于 Place
,一个用于 Restaurant
,其中一个隐藏的 OneToOne
字段用于 Place
用于公共字段。
请注意,每次获取 Restaurant 对象时,都需要对 places 表进行额外查询。