将Django模型父类添加到现有模型中以实现多表继承

Rya*_*len 5 django models multi-table-inheritance

Django文档使用此示例来演示多表继承:

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)
Run Code Online (Sandbox Code Playgroud)

如果我最初像这样构建 Restaurant 类:

class Restaurant(models.Model):
    name = models.CharField(max_length=50)
    address = models.CharField(max_length=80)
    serves_hot_dogs = models.BooleanField(default=False)
    serves_pizza = models.BooleanField(default=False)
Run Code Online (Sandbox Code Playgroud)

然后在创建了一堆 Restaurant 对象之后,我意识到使用 MTI 会更好,有没有一种好的方法可以在事后创建父 Place 类并迁移数据?

Rya*_*len 5

  1. 添加新模型,但保留旧模型。进行迁移

  2. 编写自定义迁移以将数据从Restaurant模型复制到NewRestaurant模型。

  3. 如有必要,将其他模型中的任何外键字段从 更改为RestaurantNewRestaurant进行迁移

  4. 如有必要,请在应用程序中Restaurant使用该类的所有位置进行更改以使用该类NewRestaurant

  5. 删除旧的餐厅模型并进行迁移

  6. 将新餐厅模型重命名为,Restaurant以便一切都能在新结构下正常运行。进行迁移