dav*_*gan 69 django django-models
在Django中,我可以这样做:
test = Test.objects.get(id=1)
test.name
Run Code Online (Sandbox Code Playgroud)
我希望能够使用动态生成的字符串访问属性,如下所示:
test['name']
Run Code Online (Sandbox Code Playgroud)
或者,使用字符串的任何其他语法.我试过了
test._meta.get_field_by_name('name')
Run Code Online (Sandbox Code Playgroud)
但这会返回字段本身而不是值.
有任何想法吗?
Cas*_*par 99
你可以使用python的内置getattr()
函数:
getattr(test, 'name')
Run Code Online (Sandbox Code Playgroud)
ari*_*rie 15
假设name是您实例的属性,测试 getattr(test, 'name')
应该返回相应的值.或者test.__dict__['name']
.
您可以getattr()
在这里阅读更多信息:http://effbot.org/zone/python-getattr.htm
dav*_*ang 10
其他答案仍然有效,但现在你可以使用Django的_meta.get_field()来做到这一点.
test._meta.get_field('name')
Run Code Online (Sandbox Code Playgroud)
请注意,Model _meta API从1.8 开始已经开始其官方支持和文档,但在其官方文档之前已经在先前版本中分发和使用.
在Python中,通常可以访问具有dict方法的对象内的值。
假设您有这个课程:
class Dog(object):
def __init___(self, color):
self.color = color
Run Code Online (Sandbox Code Playgroud)
然后我实例化它:
dog = Dog('brown')
Run Code Online (Sandbox Code Playgroud)
所以我可以通过执行以下操作来查看颜色:
print dog.color
Run Code Online (Sandbox Code Playgroud)
我还可以通过执行以下操作来查看颜色:
print dog.__dict__['color']
Run Code Online (Sandbox Code Playgroud)
我可以设置颜色:
print dog.__dict__['color'] = 'green'
print dog.color
>>>green
Run Code Online (Sandbox Code Playgroud)
归档时间: |
|
查看次数: |
29761 次 |
最近记录: |