0

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を使用しています

4

0 に答える 0