使用django prefetch_related()

时间:2018-09-04 12:09:16

标签: django django-templates django-queryset prefetch

给出以下内容:

        return Client.objects.filter(case=self.kwargs['case_pk']
        ).prefetch_related('parent_set', 'children_set')

这正常工作,尽管我认为我的过滤器创建了太多查询。

但是,我的问题是可能有多个客户。结果是:

clienta parent1

clienta child1

clientb 父母1 parent2

clientb 小孩1 child2

我需要将父母和孩子分组给客户,这样我就可以在模板中生成如下内容:

clienta 父母:parent1 孩子:child1

clientb 父母:parent1 parent2 孩子:child1 child2

希望如此。

模板如下:

<table class="table table-bordered">
    <thead class="thead-dark">
    <tr>
        <th scope="col">Parents</th>
        <th scope="col">Siblings</th>
        <th scope="col">Children</th>
        <th scope="col">Step Children</th>
    </tr>
</thead>
<tbody>
    {% for client in clients %}
        <tr>
            <td>
                {% for p in client.parent_set.all %}
                {{ p }}<br />
                {% endfor %}
            </td>
            <td>
                    {% for s in client.child_set.all %}
                    {{ s }}<br />
                    {% endfor %}
            </td>
        </tr>
    {% empty %}
        <tr>
            <td colspan="2">No clients added to this case yet</td>
        </tr>
    {% endfor %}
</tbody>
</table>

0 个答案:

没有答案