2014-09-24 121 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) 
.... 

在我的views.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 2014-09-24 05:36:42

+0

您可以将其放置在models.py文件中,然后如果您需要在其他地方使用它,则可以执行以下操作:从models.py导入ACHIEVEMENT_TYPES – 2014-09-27 05:51:21