A left outer reverse select_related in Django? A left outer reverse select_related in Django? django django

A left outer reverse select_related in Django?


Starting from Django 1.4 prefetch_related does what you want.

Parent.objects.prefetch_related('child_set')

Related(!) django docs : https://docs.djangoproject.com/en/dev/ref/models/querysets/#prefetch-related.


Sorry to once again post a link to my blog, but I have written about a technique to simulate select_related on backwards relationships.


In this case, I think the best thing to do is list the children, then get the parent from them, like this:

children = Child.objects.filter(...).select_related('parent').order_by('parent')

Then in the template, possibly use a regroup (note the order_by above):

{% regroup children by parent as parents %}<ul>{% for parent in parents %}    <li>{{ parent.grouper }}    <ul>    {% for child in parents.list %}    ...    {% endfor %}    </ul>    </li>{% endfor %}</ul>