2013-04-21 49 views
0

我在Python絕對新鮮,我很好奇,如果給定:翻譯Django中的選擇而不使用循環?

ENROLLMENT_STATUS = (
         (1, 'Enrolled'), 
         (2, 'Promoted'), 
         (3, 'Dropped'), 
         (4, 'Failed'), 
        ) 

我可以整數1..4轉換爲其對應的STR不使用循環如:

for i in Enrollment.ENROLLMENT_STATUS: 
    if i[0] == self.enrollment_status: 
     status = i[1] 
     break 

感謝大家的幫助。

問候, 乍得

回答

3

你可以將它們轉換爲字典這樣

try: 
    {k: v for k, v in ENROLLMENT_STATUS}[self.enrollment_status] 
except ValueError: 
    raise # or whatever 

或像這樣:

try: 
    dict(ENROLLMENT_STATUS)[self.enrollment_status] 
except ValueError: 
    raise # or whatever 
3

可以使用get_FOO_display方法,像這樣:

self.get_enrollment_status_display() 

它將打印Enrolled如果狀態爲1,等等。