2013-11-04 43 views
1

我在1-7的範圍的機型Level動態訪問Django模型領域蟒蛇

class Level: 
    level1_id = models.IntegerField() 
    level2_id = models.IntegerField() 
    level3_id = models.IntegerField() 
    level4_id = models.IntegerField() 
    level5_id = models.IntegerField() 
    level6_id = models.IntegerField() 
    level7_id = models.IntegerField() 
    level_name = models.CharField() 

我傳遞和整數ID和AJAX的名稱。現在我想用相應的id和name來獲取levelX_id,X是id(1-7)。

這就是我正在做的。

id = request.POST['id'] 
name = request.POST['name'] 


if id == 1: 
    level_name = Level.objects.all(level_name = name)[0].level1_id 


if id == 2: 
    level_name = Level.objects.all(level_name = name)[0].level2_id 


if id == 3: 
    level_name = Level.objects.all(level_name = name)[0].level3_id 


if id == 4: 
    level_name = Level.objects.all(level_name = name)[0].level4_id 


if id == 5: 
    level_name = Level.objects.all(level_name = name)[0].level5_id 


if id == 6: 
    level_name = Level.objects.all(level_name = name)[0].level6_id 


if id == 7: 
    level_name = Level.objects.all(level_name = name)[0].level7_id 

我可以使它更通用。就像是。

level_X_id = "level"+id+"_id" 
level_name = Level.objects.all(level_name = name)[0].level_X_id 

回答

1

我認爲getattr是你想要的。你可以這樣做:

level_X_id = "level"+id+"_id" 
level_name = getattr(Level.objects.all(level_name = name)[0], level_X_id) 

希望這會有所幫助!

+0

它工作。謝謝。 –

+0

我試圖接受它,但根據SO的邏輯,我必須等待7-8分鐘。請等一下。謝謝 –

+0

哈哈,很好的官僚作風:)好吧,很高興我可以幫忙:) –