使用最新版本创建新站点或使用旧版本[关闭]
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了使用最新版本创建新站点或使用旧版本[关闭]相关的知识,希望对你有一定的参考价值。
我正在处理的项目基于Django 1.4,实际上我无法对其进行更改/更新。
我必须使用API来修改该站点上的数据。
我以为我会使用Django Rest Framework来做到这一点。
如果我使用Django 3.X和最新版本的DRF(使用与最旧站点相同的数据库)从头开始创建新站点,将会出现问题吗?
我的意思是,如果通过在新站点上使用API来更改数据库中的数据,那么这也将在“旧”数据库上进行更改吗?
另一方面,我可以继续在“旧”站点上工作,并使用旧版本的DRF,但这些版本不完整,文档较少且安全性较低。
非常感谢
答案
听起来这是一个很好的机会,可以启动一个迁移项目到受支持的安全版本的Django。 始终使用LTS版本:2.2是最新的LTS版本,但尚未发布3.x。
您将需要从旧应用程序复制模型,并设置managed = False
,访问与旧项目相同的数据库,以使用新的API修改数据。
一旦您的API可以处理网站所需的所有功能,迁移整个网站将非常容易。
请注意以下几点:
- 在新项目中的模型需要使用相同的数据库表和列,具有相同的字段类型。 但是只要您随后指定
db_column
(在字段上)和db_table
(在模型上)以让Django知道,只要您再命名实际的模型和字段(如果您觉得旧项目使用的是“错误的”命名约定),就不会阻止您重命名实际的模型和字段。映射到现有数据库。 - 您可以将新模型和表添加到现有数据库中(使用
managed = True
),而不会影响旧应用程序。
如果在某个阶段需要修改现有表:
- 然后,您可能会考虑切换到
managed = True
(并将您的旧应用程序更改为managed = False
),确保在此之前,您已经从数据库中清除了迁移表,然后使用fake
集运行迁移(以便实际上没有迁移任何东西)。 如果旧的应用程序不再维护,我会这样做。 - 如果旧的应用程序仍然得以维护,则将更加棘手。 您可能必须直接在SQL中更改数据库。
- 不会影响旧应用程序的更改:添加新列。
- 会影响旧应用程序的更改:限制约束,添加约束或更改数据类型的所有操作。
- 可能影响旧应用程序的更改:约束松动。 这不会影响数据库中的现有数据,但可能会使希望以某种格式的数据的旧应用程序的验证程序失效,并为新数据获取“无效”数据。
以上是关于使用最新版本创建新站点或使用旧版本[关闭]的主要内容,如果未能解决你的问题,请参考以下文章
我的 MainActivity 在使用 android 旧版本(例如 oreo)时滞后,但在最新版本中运行良好,如何解决?