Я использую 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 или в оболочке, они сохраняются правильно. Проблема возникает , когда я получаю эти данные из базы данных. Поэтому, если я получаю эти данные с помощью Association.objects.all()
, Association.objects.get(id=1)
или просто смотрю на них в подробном представлении администратора django, я вижу для каждого переведенного поля данные по умолчанию. Когда я проверяю запрос SQL, который Django выполнил, я вижу этот странный запрос:
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 , три раза name и три раза 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 -модель перевод версии 0.14.4