在下面的代码中,data_var
是来自Django查询的对象,即data_var = Datavar.objects.all()
。我有field1
,field2
,field3
等数据库字段。在以下代码中,我尝试将字段的名称作为var
中的字符串获取,然后说tg.var
但我得到一个错误,因为对象没有属性'var':
如果我说tg.var
,则应将其解释为tg.field1
或2
或3
。怎么做到这一点?
for tg in data_var:
for col in range(content.no_of_cols):
var = "field" + str(col)
tg.var
答案 0 :(得分:6)
要使用字符串名称获取对象的属性,您应该使用getattr
内置函数,这样就可以将代码转换为下一行:
for tg in data_var:
for col in range(content.no_of_cols):
var = "field" + str(col)
value = getattr(tg, var)
Python文档中解释了
答案 1 :(得分:1)
看起来你正在尝试像PHP一样的变量变量。 Python没有它。你需要使用字典或getattr。
(编辑,因为第一个答案已经涵盖了getattr)。
你也可以从字典中引用它:
>>> var = 'field1'
>>> tg.__dict__[var]
'this is field1'
>>> var = 'field2'
>>> tg.__dict__[var]
'this is field2'
>>> getattr(tg, var)
'this is field2'