在 Django 中,我可以这样做:
test = Test.objects.get(id=1)
test.name
我希望能够使用动态生成的字符串访问属性,如下所示:
test['name']
或者使用字符串的任何其他语法。我试过了
test._meta.get_field_by_name('name')
但这返回字段本身而不是值。
有什么想法吗?
假设 name 是实例上的一个属性 test
getattr(test, 'name')
应该返回相应的值。或者test.__dict__['name']
。
您可以在此处阅读有关
getattr()
的更多信息:Python getattr 函数
其他答案仍然有效,但现在您可以使用 Django 的 _meta.get_field() 来完成此操作。
test._meta.get_field('name')
请注意,Model _meta API 自 1.8 起已开始提供官方支持和文档,但在其官方文档之前已在之前的版本中分发和使用。
在 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