【发布时间】:2018-09-06 06:17:18
【问题描述】:
将数据从非常旧的 Django 应用程序 (0.97) 迁移或导入到相对“现代”的 Django 版本 (1.8) 的最佳方法是什么?
应用程序(如果你可以这么称呼它的话)只不过是一系列模型和一些简单的视图。用户主要通过管理 UI 访问它(我知道,我知道)。因此,就要转换的代码而言,很少。我已将 models.py 更新为对 1.8 友好,我可以轻松启动应用的空实例。
但是,一旦我尝试获取系统中的旧数据,就会遇到问题。我以为我会尝试转储数据/加载数据,但没想到它会起作用(而且它没有)。我在这些方面遇到了许多错误:
django.db.utils.IntegrityError: Problem installing fixture
'olddata.json': Could not load contenttypes.ContentType(pk=6):
duplicate key value violates unique constraint
"django_content_type_app_label_5fd9156b761d2158_uniq"
DETAIL: Key (app_label, model)=(contenttypes, contenttype)
already exists.
在深入了解导出文件之前,我想确保自己走在正确的轨道上。有没有更好的方法来做到这一点?
【问题讨论】:
-
看来您的方向是正确的。您可能想要发布您的模型和 olddata.json 的示例,以便为我们提供更好的想法。您得到的错误是说您试图违反唯一约束。这意味着:1.您的新模型的唯一约束/主键设置错误或 2.您的 olddata.json 以某种方式具有重复的 PK/唯一数据(导出错误等)。
-
尝试导出特定表并将它们导入新数据库,例如:python manage.py dumpdata app.table --indent 4 --format xml > fixtures/app_table.xml
标签: python django django-migrations django-database