1

次のコードdata_varは、Djangoクエリからの私のオブジェクト data_var = Datavar.objects.all()です。、、などfield1のデータベースフィールドがあります。次のコードでは、フィールドの名前を文字列として取得しようとしていますが、オブジェクトに属性'var'がないため、エラーが発生します。field2field3vartg.var

私が言うなら、それはまたはまたはtg.varとして解釈されるべきです。これを達成する方法は?tg.field123

for tg in data_var:
     for col in range(content.no_of_cols):
        var = "field" + str(col)
        tg.var 
4

2 に答える 2

7

オブジェクトの属性を文字列名で取得するには、getattr組み込み関数を使用する必要があり、その方法でコードを次の行に変換します。

for tg in data_var:
     for col in range(content.no_of_cols):
        var = "field" + str(col)
        value = getattr(tg, var)

gettatrは Python doc で説明されています。

于 2012-08-09T12:19:02.450 に答える
1

PHPのように可変変数を試しているようです。Pythonにはそれがありません。辞書または getattr を使用する必要があります。

(最初の回答はすでにgetattrをカバーしているため、編集中)。

dict から参照することもできます。

>>> var = 'field1'
>>> tg.__dict__[var]
'this is field1'
>>> var = 'field2'
>>> tg.__dict__[var]
'this is field2'
>>> getattr(tg, var)
'this is field2'
于 2012-08-09T12:26:25.660 に答える