繼承

模型之間的繼承可以通過兩種方式完成:

  • 一個常見的抽象類(參見模型混合示例)
  • 具有多個表的通用模型

多表繼承將為公共欄位建立一個表,為每個子模型示例建立一個表:

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 表進行額外查詢。