在Django中,我可以这样做:
test = Test.objects.get(id=1)
test.name
我希望能够使用动态生成的字符串访问属性,如下所示:
test['name']
或任何其他使用字符串的语法。我试过了
test._meta.get_field_by_name('name')
但这会返回字段本身而不是值。
有任何想法吗?
Answers:
您可以使用python的内置getattr()
函数:
getattr(test, 'name')
self.getattr(SelfModelName, 'id')
= =?
假设名称是实例测试中的 一个属性,getattr(test, 'name')
则应返回相应的值。或者test.__dict__['name']
。
您可以getattr()
在此处了解更多信息:http : //effbot.org/zone/python-getattr.htm
在Python中,通常可以访问具有dict方法的对象内的值。
假设您有这个课程:
class Dog(object):
def __init___(self, color):
self.color = color
然后我实例化它:
dog = Dog('brown')
所以我可以通过以下方式查看颜色:
print dog.color
我还可以通过执行以下操作来查看颜色:
print dog.__dict__['color']
我可以设置颜色:
print dog.__dict__['color'] = 'green'
print dog.color
>>>green
getattr
可以使用,因此是正确的选择。