django-modeltranslation を使用して、一部のモデル フィールドをオランダ語 (nl) とフランス語 (fr) に翻訳します。
現在、1 つのモデルを除いてすべて正常に動作しています。
@register(Association)
class AssociationTranslationOptions(TranslationOptions):
fields = (
'title',
'name',
'description',
)
データベースでは、3 つのフィールドとそれに対応する翻訳済みのフィールドが表示されます: title、title_nl、title_fr、name、name_nl、name_fr、description、description_nl、description_fr。これらの翻訳されたフィールドを django admin またはシェルで更新すると、それらは正しく保存されます。データベースからこのデータをフェッチすると、問題が発生します。したがってAssociation.objects.all()
、 、Association.objects.get(id=1)
、または django admin の詳細ビューでこのデータを取得すると、翻訳されたフィールドごとにデフォルトのデータが表示されます。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'
ご覧のとおり、titleが 3 回、nameが 3 回、descriptionが 3 回あり、 language suffix はありません。
したがって、このモデルを更新する場合、django-modeltranslation はうまく機能しますが、データベースから翻訳されたデータをフェッチする場合、作成したモデルの 1 つだけでは機能しません。
# 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を使用しています