我继承了在单个Django项目下有许多应用程序的情况。这些应用程序大多不相关,但仍然在同一个项目中。
该项目正在使用Django 1.6.4,我们希望升级到至少1.8以获得LTS版本。我想以受控的增量方式执行此操作 - 一次升级每个应用程序。
是否可以在两个不同版本的Django下运行两个独立的应用程序,两个版本都在同一个Django项目中。或者,我们唯一的选择是将每个应用程序分解为自己的项目,一次一个?
答案 0 :(得分:2)
你不能(或者更好,你不应该),只有django
的单一版本可以安全地阅读settings.py
甚至相关的应用程序。如果允许两个单独版本的django读取并执行单个settings.py
混乱可能会出现。
理论上,您可以添加额外的settings.py
文件,注释掉某些应用程序(假设没有依赖项),并在同一个数据库上启动第二个django实例。但这就是问题。
例如,如果django版本之间的特定model.*Field
执行方式稍有不同,则会遇到数据库不一致。一次升级所有应用程序可能比从同一个数据库表中读取/写入两个版本的django要安全得多。
换句话说,如果您100%确定可以创建两个settings.py
个文件,其中一个包含应用A,另一个包含应用B INSTALLED_APPS
和,则不会显示单个应用settings.py
,然后你就安全了。我还没有看到一个django项目,应用程序之间的依赖关系允许在两组应用程序中干净地分离它,但是,如果你可以在项目中管理它,你可以安全地启动两个django实例(每个都有不同的版本)将正确的setting.py
传递给每个人。
基本上:
应用程序大多不相关
“大部分”这个词是杀死它的。
另一方面,您始终可以选择复制数据库并制作两个django项目,每个项目都连接到一个数据库实例。
然后,您可以在稍后将丢弃的数据库上自由测试新版本的django。这是升级更安全的选择。