37

簡単な質問です。変数を使用してモデルのフィールドの 1 つにアクセスしようとしています。

class ExampleModel(models.Model):
      the_field = models.CharField()
      the_field_two = models.CharField()

どのようにフィールドに動的にアクセスしますか? 私は試した:

model = ExampleModel.objects.get(pk=1)
fieldtoget = 'the_field'
test_var = model[fieldtoget]

しかし、うまくいかないようです。これを行う方法はありますか?

更新:質問を更新すると思いました。フィールドの値を取得できるだけでなく、変数フィールド名から値を更新できる関数を (より大きな関数の一部として) 記述しようとしています。例えば:

model[fieldtoget] = 'yo'
model.save()

PHP では、{} ラッパーを使用できます。$model{$fieldtoget}例として、動的変数名については、Python に似たようなものがあることを望んでいました :)

乾杯

4

1 に答える 1

74

これを行うには、pythons getattr 関数を使用できます。フィールド名を属性として渡します。

getattr(model, fieldtoget)

fieldtoget は変数であるため、これは動的です。

setattr を使用して、同じ方法で設定できます。

于 2012-07-13T04:26:15.027 に答える