假设我有两个模型
class first(models.Model):
name = models.CharField(max_length=20)
y = models.ForeignKey(second)
class second(models.Model):
random = models.CharField(max_length=20)
现在,如果我想使用name
为first
对象实例获取getattr
的值,我可以执行getattr(x, 'name')
x
为first
} object但是如果我对getattr(x, 'y.random')
尝试相同的操作,即使x.y.random
是一个完全有效的查询,它也会引发错误。
如果我拥有的是对象x.y.random
和字符串'y.random',是否可以查询x
?
答案 0 :(得分:1)
那是因为它试图获取属性'y.random'
,虽然没有这样的属性,并且拥有.
的属性甚至无效。
getattr(getattr(x, 'y'), 'random'))