1

私はモデルを持っていますLevel

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()

私は 1 から 7 の範囲の整数 ID と AJAX からの名前を渡しています。ここで、それぞれの ID と名前で 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
4

1 に答える 1

1

getattrはあなたが望むものだと思います。次のようなことができます。

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

お役に立てれば!

于 2013-11-04T17:33:27.343 に答える