You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何通过dumpdata导出Django-parler TranslatableModel的翻译字段?

Django-parler翻译字段dump/加载问题解决

问题描述

使用命令python manage.py dumpdata app.Organization -o fixtures/organizations.json导出数据时,Django-parler的TranslatableModel翻译字段未出现在生成的JSON文件中。

相关代码示例:

models.py

class Organization(TranslatableModel, Entity):
    translations = TranslatedFields(
        name = models.CharField(verbose_name=_("Name"), max_length=200),
        description = RichTextField(verbose_name=_("Description"), blank=True, null=True, config_name='default')
    )
    status = models.CharField(verbose_name=_("Status"), max_length=50),

生成的organizations.json

[
    {
        "model": "app.organization",
        "pk": 1,
        "fields": {
            "status": "Active"
        }
    },
    {
        "model": "app.organization",
        "pk": 2,
        "fields": {
            "status": "Active"
        }
    }
]

解决方法

1. 导出包含翻译字段的数据

Django-parler会为每个TranslatableModel自动创建对应的翻译模型(命名规则:主模型名+Translation,比如这里的OrganizationTranslation),翻译字段实际存储在这个单独的模型中。因此导出时需要同时指定主模型和翻译模型:

python manage.py dumpdata app.Organization app.OrganizationTranslation -o fixtures/organizations.json

如果需要导出整个app的所有数据(包括所有模型及对应翻译),可以直接指定app名称:

python manage.py dumpdata app -o fixtures/organizations.json

2. 加载含翻译字段的数据

导出完成后,直接使用loaddata命令即可正常加载数据,Django-parler会自动处理主模型与翻译模型的关联:

python manage.py loaddata fixtures/organizations.json

注意:确保项目中PARLER_LANGUAGES配置正确,加载时才能正确匹配对应语言的翻译内容。


内容的提问来源于stack exchange,提问作者Alberto Sanmartin Martinez

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.12 03:31:05