首页 > 解决方案 > 我可以在 getattr() 中为相关模型传递一个变量吗?

问题描述

所以这有效:

field_name = 'msrp'

price = getattr(mymodel.related_model, field_name)

但我想为“related_model”传递一个变量,例如:

field_name = 'msrp'
x = related_model_name

price = getattr(mymodel.x, field_name)

显然这不起作用,但它显示了我想要完成的事情。有没有办法以某种方式将变量作为相关模型名称的占位符传递?

标签: pythondjango

解决方案


没有多大意义,因为这price = getattr(mymodel.related_model, 'msrp')意味着price = mymodel.related_model.msrp. 如果名称related_model存储在变量中,则可以使用getattr(…)[python-doc]获取相关的模型对象:

x = related_model_name

price = getattr(mymodel, x).msrp

或者如果两者都是字符串,您可以使用getattr两次:

x = related_model_name
msrp = field_name

price = getattr(getattr(mymodel, x), msrp)

推荐阅读