如何在python中使用getattr获取django模型的外键对象的属性?

时间:2017-08-19 20:03:01

标签: python django

假设我有两个模型

class first(models.Model):
    name = models.CharField(max_length=20)
    y = models.ForeignKey(second)

class second(models.Model):
    random = models.CharField(max_length=20)

现在,如果我想使用namefirst对象实例获取getattr的值,我可以执行getattr(x, 'name') xfirst } object但是如果我对getattr(x, 'y.random')尝试相同的操作,即使x.y.random是一个完全有效的查询,它也会引发错误。

如果我拥有的是对象x.y.random和字符串'y.random',是否可以查询x

1 个答案:

答案 0 :(得分:1)

那是因为它试图获取属性'y.random',虽然没有这样的属性,并且拥有.的属性甚至无效。

getattr(getattr(x, 'y'), 'random'))