繁体   English   中英

Django,如何动态访问对象的相关模型

[英]Django, How to access dynamically, related models of object

我有模型实例User。

用户与另外两个模型model1model2有两个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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM