0

我使用 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

4

0 回答 0