2014-09-24 2 views
1

У меня есть класс моделей с полем выбора/положительным целым числом.django views.py - показать положительное значение текстового значения

class AchievementDetails(models.Model, FillableModelWithLanguageVersion): 
    ACADEMIC_ACHIEVEMENT = 1 
    COMMERCIAL_ACHIEVEMENT = 2 
    PERSONAL_ACHIEVEMENT = 3 
    PROFESSIONAL_ACHIEVEMENT = 4 
    SPORTING_ACHIEVEMENT = 5 
    OTHER_ACHIEVEMENT_TYPE = 6 

ACHIEVEMENT_TYPES = (
    (ACADEMIC_ACHIEVEMENT, _('Academic Details')), 
    (COMMERCIAL_ACHIEVEMENT, _('Commercial Achievement')), 
    (PERSONAL_ACHIEVEMENT, _('Personal Achievement')), 
    (PROFESSIONAL_ACHIEVEMENT, _('Professional Achievement')), 
    (SPORTING_ACHIEVEMENT, _('Sporting Achievement')), 
    (OTHER_ACHIEVEMENT_TYPE, _('Other Achievement Type')), 
) 

.... 
achievement_type = models.PositiveIntegerField(choices=ACHIEVEMENT_TYPES) 
.... 

На моих view.py Я пытаюсь отобразить выбранный текст типа достижения. Например: Академические достижения

В настоящее время я могу отображать только выбранное числовое значение. Например: 1

Вот код, который у меня в views.py:

def achievement_details(request): 
    .... 
    for ad in achievement_details: 
     ad.achievement_type_as_text = ad.achievement_type 
    .... 

Что такое правильный код, чтобы вернуть выбранный текст ACHIEVEMENT_TYPES?

ответ

0

Поскольку у вас есть список кортежей вы хотите использовать что-то вроде следующего

ACHIEVEMENT_TYPES = (
    (ACADEMIC_ACHIEVEMENT, 'Academic Details'), 
    (COMMERCIAL_ACHIEVEMENT, 'Commercial Achievement'), 
    (PERSONAL_ACHIEVEMENT, 'Personal Achievement'), 
    (PROFESSIONAL_ACHIEVEMENT, 'Professional Achievement'), 
    (SPORTING_ACHIEVEMENT, 'Sporting Achievement'), 
    (OTHER_ACHIEVEMENT_TYPE, 'Other Achievement Type'), 
) 

result = [item for item in ACHIEVEMENT_TYPES if item[0] == ad.achievement_type] 

ad.achievement_type_as_text = result[1] 
+0

Спасибо за ответ. если я поместил ваш код в views.py. Я получаю сообщение об ошибке: глобальное имя «ACHIEVEMENT_TYPES» не определено. Как импортировать ACHIEVEMENT_TYPES? Не уверен, как импортировать его из models.py или даже если я делаю это правильно. – user1261774

+0

Вы можете поместить его в свой файл models.py, а затем, если вам нужно использовать его в другом месте, вы можете сделать следующее: from models.py import ACHIEVEMENT_TYPES –

Смежные вопросы