我使用 django-modeltranslation 将一些模型字段翻译成荷兰语 (nl) 和法语 (fr)。
现在,除了一个模型之外,一切都运行良好:
@register(Association)
class AssociationTranslationOptions(TranslationOptions):
fields = (
'title',
'name',
'description',
)
在数据库中,我可以看到三个字段及其翻译的等价物:title、title_nl、title_fr、name、name_nl、name_fr、description、description_nl 和 description_fr。当我在 django admin 或 shell 中更新这些翻译的字段时,它们被正确保存。当我从数据库中获取这些数据时,就会出现问题。因此,如果我使用 , 获取此数据Association.objects.all()
,Association.objects.get(id=1)
或者只是在 django 管理详细信息视图中查看它,我会看到每个已翻译字段的默认数据。当我检查 Django 执行的 SQL 查询时,我看到了这个奇怪的查询:
SELECT "member_association"."id",
"member_association"."title",
"member_association"."title",
"member_association"."title",
"member_association"."slug",
"member_association"."name",
"member_association"."name",
"member_association"."name",
"member_association"."description",
"member_association"."description",
"member_association"."description",
"member_association"."mollie_api_key_test",
"member_association"."mollie_api_key_live",
"member_association"."mollie_profile_id",
"member_association"."bank_account_number",
"member_association"."created",
"member_association"."last_modified"
FROM "member_association"
WHERE "member_association"."id" = '2'
如您所见,有 3 次title、3 次name和 3 次description,没有语言后缀。
因此,对于更新此模型,django-modeltranslation 效果很好,但对于从数据库中获取已翻译的数据,它不适用于我创建的模型之一:
# WORKS
Association.objects.update(name_nl='naam', name_fr='nom')
# ALSO WORKS
association_obj.name_nl = 'naam'
association_obj.name_fr = 'nom'
association_obj.save()
# DOES NOT WORK
association_obj = Association.objects.get(id=1)
print(association_obj.name_nl) # prints 'naam' -> correct
print(association_obj.name_fr) # prints 'nom' -> incorrect
有人可以帮我解决这个错误。我已经看了好几天了。我以为我会在某个地方打错字,但找不到错字。我还尝试删除这些字段,再次添加它们,再次使用 , 同步数据库./manage.py makemigrations
,./manage.py migrate
但仍然没有成功。./manage.py update_translation_fields
./manage.py sync_translation_fields
我正在使用 python 版本 3.5.2、Django 版本 2.1.7 和 django-modeltranslation 版本 0.14.4