我对数据库的架构进行了一些重大更改,但我不想在迁移到新架构的过程中丢失任何数据。让我举一个具体的例子。我目前有一个class Person(models.Model)
,每个Person
实例都有一大堆与之关联的数据,例如name
,age
等。已经有很多Person
我的数据库中的实例。我现在意识到我实际上需要两种Person
,一种Student
和一种Teacher
,每种类型都有自己独特的变量和方法。在我看来,实现这一目标的最佳方法是使Person
成为一个抽象类,并使Student
和Teacher
扩展该类。 Person
中的一些变量目前仅适用于Student
,因此我希望将这些变量移到Student
子类中。
一般情况下,如何在不丢失任何数据的情况下进行此迁移?我对Django很新,所以我不知道从哪里开始,除了我可能需要编写某种自定义脚本以便与python manage.py
一起运行。
答案 0 :(得分:3)
您正在寻找的是Django data migrations。
abstract = True
添加到您的元元模型Student
和Teacher
模型并让它们继承自Person
manage.py makemigrations
Person
的操作。您的自定义数据迁移操作需要在创建之后和删除之前进行。按照Django文档示例迁移Person
模型上的名称字段,而是为每个人创建新Student
和Teacher
模型的实例。请务必保存新实例。其他提示: