Django中相关对象的后向foreignKey关系索引(related_name)

时间:2014-03-16 16:14:26

标签: python django django-models

我尝试索引并访问另一个表的外键中引用的相关对象的属性:

class table1 (models.Model):
    name =  models.CharField()
    ....
class table2 (models.Model):
    attr1 = models.ForeignKey(table1, related_name = "backTable")
    importantAttribute = models.Charfield()

我想从Python API解释器访问table2中的importantAttribute:

 >>> t1 = table1.objects.create(name="t1")
 >>> a1 = table2.objects.create(name="a1", attr1 = t1)
 >>> t1.backTable.all() 
 >>> [<table2: a1>]
 >>>> I'd like to access importantAttribute of table2 from t1 here. how?

1 个答案:

答案 0 :(得分:0)

foreignKey字段创建多对一关系,因此t1.backTable.all()将返回table2对象列表。

要访问相关的重要属性,您只需对列表中的对象使用点符号,例如:

t1.backTable.all()[0].importantAttribute

请注意,因为.all()正在返回一个对象列表,所以你必须遍历列表或选择一个像上面的例子。

在模板中,它可能看起来像:

{% for backTable in t1.backTable.all %}
    {{ backTable.importantAttribute }}
{% endfor %}