django-modelstranslation fallback原始字段值

时间:2015-03-10 21:09:44

标签: python django django-models django-modeltranslation

我有一个很大的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
  5. 中的默认语言

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

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

    谢谢

2 个答案:

答案 0 :(得分:2)

我能够在不需要克隆数据库的情况下解决这个问题。我做的是:

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

答案 1 :(得分:1)

  1. 将生产数据库克隆到暂存环境。
  2. 在分段中应用迁移。
  3. 验证一切都在分段中有效。

  4. 然后:

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

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