2014-09-24 119 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