如何通过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
相关产品推荐
相关产品推荐

