django显示父表中的对象

时间:2014-09-14 18:30:48

标签: python django

如果我有一对多的关系。如何在子模板中显示相关父表中的字段。

models.py

class Parent(models.Model):
    name = models.CharField()

class Child(models.Model):
    parent = models.ForeignKey(parent)
    child_name = models.CharField()

views.py

def childs(request):
    return render_to_response('dashboard/childs.html', {'childs': Child.objects.all(), 'parents': Parent.objects.all() })

childs.html

<table class="table table-striped">
            <thead>
                <tr>
                  <th>id</th>
                  <th>child name</th>
                  <th>parent name</th>
                </tr>
            </thead>
            <tbody>

            {% for child in childs %}

            <tr>
                <td><a href="/parent/get/childs/{{ child.id }}/">{{ child.id }}</a></td>
                <td><a href="/parent/get/{{ child.id }}/">{{ child.child_name }}</a></td>
                <td><a href="/parent/get/{{ child.id }}/">{{ parent.name }}</a></td>

1 个答案:

答案 0 :(得分:4)

为实现此目的,您无需在上下文中发送parent个对象。

您可以在循环中执行{{ child.parent.name }},其中child.parent指的是与parent模型实例关联的外键child

所以你要做的就是

<a href="/parent/get/{{ child.parent.id }}/">{{ child.parent.name }}</a>

此外,您可以考虑使用select_relatedprefetch_related

优化数据库调用