Использование django prefetch_related () - PullRequest
0 голосов
/ 04 сентября 2018

Учитывая следующее:

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

Это работает правильно, хотя я думаю, что мой фильтр создает слишком много запросов.

Однако моя проблема в том, что может быть более одного Клиента. В результате:

Clientâ Parent1

Clientâ child1

clientb Parent1 parent2

clientb child1 child2

Мне нужно сгруппировать родителей и детей по клиенту, чтобы я мог создать что-то подобное в шаблоне:

Clientâ parent: parent1 дети: child1

clientb родители: родитель1 родитель2 дети: ребенок1 ребенок2

Надеюсь, это имеет смысл.

Шаблон выглядит следующим образом:

<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>
...