继承

模型之间的继承可以通过两种方式完成:

  • 一个常见的抽象类(参见模型混合示例)
  • 具有多个表的通用模型

多表继承将为公共字段创建一个表,为每个子模型示例创建一个表:

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 表进行额外查询。