django-modelstranslation 回退原始字段值

Posted

技术标签:

【中文标题】django-modelstranslation 回退原始字段值【英文标题】:django-modelstranslation fallback original field value 【发布时间】:2015-05-12 12:08:06 【问题描述】:

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

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

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

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

谢谢

【问题讨论】:

谢谢你,你在update_translation_fields上给我小费为我节省了很多时间。 【参考方案1】:

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

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

【讨论】:

【参考方案2】:
    将生产数据库克隆到暂存环境。 在暂存中应用迁移。

    验证暂存中的一切正常。

    然后:

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

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

【讨论】:

以上是关于django-modelstranslation 回退原始字段值的主要内容,如果未能解决你的问题,请参考以下文章