3

我有一个被互联网用户积极使用的大型 Django 应用程序。我正在尝试将django-modeltranslation添加到我的一个应用程序中。在开发中,一切都可以通过以下过程正常工作:

  1. 安装 django-modeltranslation 并进行适当的模型更改。
  2. 为其创建南迁移python manage.py schemamigration myapp --auto
  3. 应用迁移python manage.py migrate myapp
  4. 运行 django-modeltranslation管理命令从原始字段填充默认语言python manage.py update_translation_fields

我遇到的问题在第 3 项和第 4 项之间。如果我在生产环境中运行迁移,那么翻译后的模型将不会向用户显示任何内容(我不能有停机时间),直到我运行第 4 项,这可能需要一些时间完成。

我想知道是否有办法在不翻译的情况下将翻译回退到该字段的原始内容。这回退到另一个翻译回退,并且访问原始字段original。但如果翻译不存在,我需要模型字段默认为原始字段值。

谢谢

4

2 回答 2

2

我能够解决这个问题,而无需克隆数据库。我所做的是:

  1. 部署具有迁移但没有实际 django-modeltranslation 更改的版本。
  2. 运行迁移。这将为翻译后的模型添加几个字段,但代码仍将指向原始字段。
  3. 运行管理命令python manage.py update_translation_fields。这会将原始字段值克隆到默认语言字段。
  4. 使用 django-modeltranslation 更改部署更新版本的代码。
于 2015-03-16T21:55:54.870 回答
1
  1. 将生产数据库克隆到登台环境。
  2. 在暂存中应用迁移。
  3. 验证分期中的一切工作。

  4. 然后:

    一个。将网络配置指向暂存,在闲暇时配置生产并重新配置网络(0 停机时间)。

    湾。使用所需的软件包实时更新生产环境,并将数据库从暂存环境复制到生产环境(停机时间最短)。

于 2015-03-10T22:41:34.837 回答