[英]Django, How to access dynamically, related models of object
我有模型实例User。
用户与另外两个模型model1
和model2
有两个1对1关系。 我不想做user.model1
相反,我想做这样的事情:
model_name = 'model1'
user.__dict__[model_name]
我发现我可以通过以下方式做到这一点:
user.__dict__['_wrapped'].__dict__['_' + model_name + '_cache]
但是我觉得很丑,还有另一种方法吗?
您可以使用getattr(..)
[Python-doc] :
getattr(user, 'model1')
getattr(..)
是内置的Python函数,而getattr(x, 'y')
对应于xy
(请注意,对于getattr(..)
,第二个参数是字符串)。
如果对象(此处为user
)具有属性model1
,它将引发AttributeError
。 getattr(..)
也可以采用三个参数:第三个参数用作默认值,因此如果属性non_existing_attribute
不存在,则getattr(user, 'non_existing_attribute', None)
将返回None
。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.