首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
社区首页 >问答首页 >如何在不丢失任何数据的情况下完全更改Django数据库模式?

如何在不丢失任何数据的情况下完全更改Django数据库模式?
EN

Stack Overflow用户
提问于 2017-05-09 09:06:18
回答 1查看 692关注 0票数 0

我正在对数据库的模式进行一些重大更改,但我不希望在迁移到新模式的过程中丢失任何数据。让我举一个具体的例子。我现在有一个class Person(models.Model),每个Person实例都有一堆与它相关的数据,比如nameage等等。我的数据库中已经有很多Person实例。我现在意识到,我实际上需要两种类型的Person,一种是Student,另一种是Teacher,每种类型都有自己独特的变量和方法。在我看来,实现这个目标的最好方法是让Person成为一个抽象类,并让StudentTeacher扩展该类。Person中的一些变量目前只适用于Student,因此我希望将这些变量移到Student子类中。

一般来说,我如何在不丢失任何数据的情况下进行这种迁移?我对Django相当陌生,所以我不知道从哪里开始,只是我可能需要编写一些自定义脚本来使用python manage.py运行。

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2017-05-09 09:44:46

你要找的是Django 数据迁移

  1. abstract = True添加到用户元模型中
  2. 添加StudentTeacher模型,并让它们从Person继承
  3. 运行manage.py makemigrations
  4. 由此产生的迁移将具有添加新模型和删除Person的操作。您的自定义数据迁移操作需要在创建之后和删除之前进行。遵循Django文档的示例,迁移Person模型上的name字段,而是为每个人创建新的StudentTeacher模型的实例。确保保存新实例。

其他贴士:

  1. 使用固定装置备份数据,以便在迁移过程中出错时很容易恢复数据。
  2. 将您的新的特殊迁移重新命名将是谨慎的,以使您将来更容易识别它。
票数 3
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/43875901

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档