django-modeltranslation: как узнать, определено ли значение на данном языке?

Я использую django-modeltranslation для перевода своего контента.

Если значение переведенного поля не установлено для языка, оно автоматически принимает значение языка по умолчанию.

Однако есть ли способ узнать, установлено ли значение для данного языка?

Если, например, title_fr не установлено, obj.title_fr вернет значение obj.title. Как узнать, определена ли французская версия?


person luc    schedule 21.01.2013    source источник


Ответы (1)


Вы можете получить доступ к исходному значению поля с помощью instance.__dict__['title_fr'].

Однако вы, вероятно, захотите настроить параметр fallback_values:

https://django-modeltranslation.readthedocs.org/en/latest/usage.html#fallback-values

person bmihelac    schedule 21.01.2013
comment
getattr(instance, 'title_fr') также будет работать! На самом деле, у меня была эта проблема, потому что переведенное поле — это AutoSlugField (django_extensions) - person luc; 22.01.2013
comment
Спасибо за указатель на резервные значения, но я не уверен, что это соответствует этой потребности. Кажется, его можно использовать для получения значения по умолчанию переведенного поля. - person luc; 22.01.2013
comment
fallback_values = {'title': None} заставит modeltranslation вернуть название на французском языке или None для title с французским языком. Это может быть то, что вы хотите. Я не пробовал, но думаю, что это должно работать. - person bmihelac; 22.01.2013