1 回答
TA贡献1859条经验 获得超6个赞
这听起来像是启动迁移项目到受支持且安全的 Django 版本的绝佳机会。始终使用 LTS 版本:2.2 是最新的 LTS 版本,3.x 尚未发布。
您需要从旧应用程序中复制模型并设置managed = False
,访问与旧项目相同的数据库以使用新 API 修改数据。
一旦您的 API 可以处理网站所需的所有功能,迁移整个网站将非常容易。
请注意以下事项:
新项目中的模型需要使用相同的数据库表和列,具有相同的字段类型。但是没有什么能阻止你重命名实际的模型和字段(如果你觉得旧项目使用“坏”的命名约定),只要你指定
db_column
(在字段上)和db_table
(在模型上)让 Django 知道映射到现有的数据库。您可以将新模型和表添加到现有数据库(使用
managed = True
),而不会影响旧应用程序。
如果在某个阶段您需要修改现有表:
然后,您可能会考虑切换到
managed = True
(并将旧应用程序更改为managed = False
),确保在此之前您已从数据库中清除迁移表,然后使用fake
set 运行迁移(以免实际迁移任何内容)。如果不再维护旧应用程序,我会这样做。如果仍然维护旧应用程序,那就有点棘手了。您可能必须直接在 SQL 中进行数据库更改。
不会影响旧应用程序的更改:添加新列。
将影响旧应用程序的更改:限制约束、添加约束或更改数据类型的任何内容。
可能影响旧应用程序的更改:放松约束。这不会影响您数据库中的现有数据,但它可能会触发旧应用程序的验证器,这些验证器需要某种格式的数据并为新数据获取“无效”数据。
添加回答
举报