Kit*_*sto 4 python django django-migrations
这是这个问题的扩展:如何在两个 Django 应用程序之间移动模型 (Django 1.7)
我想使用 Django 迁移将模型 M 从应用程序 A 移动到应用程序 B,而不丢失数据。该问题的最佳投票答案(不是已接受的答案,而是ozan的答案)建议使用 migrations.SeparateDatabaseAndState 并分两步进行:
这对我来说看起来是一个非常聪明的方法,但是在我的例子中,有另一个模型 N 具有 M 的外键。现在,当我在第二步中调用 makemigrations 来制作迁移文件时,我收到一个错误,因为在那个阶段AM 模型已不复存在:
ValueError: Lookup failed for model referenced by field C.N.m: A.M
Run Code Online (Sandbox Code Playgroud)
有办法处理这个问题吗?
这就是我最终做到的。主要思想是按照schillingt 的建议在删除旧模型之前创建新模型,但也使用 migrations.SeparateDatabaseAndState 来避免数据库修改,如链接问题中所示。
将模型从A复制到B。定义db_table以分配相同的表名
对 B 进行迁移。修改迁移文件以仅使用migrations.SeparateDatabaseAndState创建状态而不是数据库表。
修改 N 中的外键以指向 BM 而不是 AM(通过 to='BM')。
为此更改进行迁移。
从 A 中删除模型。
进行删除迁移。修改它,使其仅删除模型,而不删除数据库表。
应用所有迁移。
之后仍然可以重命名该表,但是在我使用的 1.7 版本中,迁移不支持 db_table 更改。
| 归档时间: |
|
| 查看次数: |
1829 次 |
| 最近记录: |