переведенные поля перечисления в тегах шаблона - PullRequest
5 голосов
/ 25 мая 2011

Я пытаюсь показать имя перечисления в шаблоне. Для ясности, у меня есть перечисление как класс в model.py

class EmployerWorkerNumberRange():
R_0 = 0
R_1_5 = 1
R_6_15 = 2
UNKNOWN = 3

EMPLOYER_WORKER_NUMBER_RANGE =(
    (R_0,_("wnr_0")),
    (R_1_5 ,_("wnr_1_5")),
    (R_6_15,_("wnr_6_15")),
    (UNKNOWN,_("UnknownWorkerNumberRange")),
)

Когда я использую его в форме, такой как

wnr = forms.ChoiceField(label=_("emp_full_reg_wnr"), required=True, choices=EmployerWorkerNumberRange.EMPLOYER_WORKER_NUMBER_RANGE)

отлично работает. (Заполняет раскрывающийся список переведенными значениями, а когда я получаю выбранный элемент, он превращает только идентификатор)

Мой вопрос: как я могу показать любое переведенное значение?в моем шаблоне, указав его идентификатор.Например, я хотел бы использовать его EmployerWorkerNumberRange.EMPLOYER_WORKER_NUMBER_RANGE[0]

Не могли бы вы предложить мне какой-либо способ?

Спасибо

1 Ответ

13 голосов
/ 25 мая 2011

Чтобы показать удобочитаемое значение поля, используйте метод get_$var_display() (создается автоматически для всех полей с choices) в экземпляре модели. Для вашего примера это примерно так:

{{ company.get_wnr_display }}

Чтобы получить значение по индексу без экземпляра модели, проще всего написать собственный фильтр, который преобразует индекс, хранящийся в переменной, в нужное значение:

{{ some_value|as_wnr_title }}
...