django-modelstranslation 后备原始字段值

django-modelstranslation fallback original field value

我有一个很大的 Django 应用程序,互联网用户经常使用它。我正在尝试将 django-modeltranslation 添加到我的一个应用程序中。在开发中,一切正常,执行以下过程:

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

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

我想知道是否有办法在没有翻译的情况下将翻译回退到字段的原始内容。这回退到另一个翻译 fallback and this access the original field original。但是如果翻译不存在,我需要模型字段默认为原始字段值。

谢谢

  1. 将生产数据库克隆到暂存环境。
  2. 在暂存中应用迁移。
  3. 验证暂存中的一切正常。

  4. 然后:

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

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

我无需克隆数据库即可解决此问题。我所做的是:

  1. 使用迁移部署一个版本,但没有实际的 django-modeltranslation 更改。
  2. 运行 迁移。这将向翻译后的模型添加几个字段,但代码仍将指向原始字段。
  3. 运行管理命令python manage.py update_translation_fields。这会将原始字段值克隆到默认语言字段。
  4. 使用 django-modeltranslation 更改部署更新版本的代码。