Подтвердить что ты не робот

Как выбрать_отсоединение по обратному внешнему ключу?

Возможный дубликат:
Левый внешний обратный select_related в Django?

A BlogPost имеет много Comment s. Я хочу получить список BlogPost и все их комментарии.

Таким образом, у меня есть

BlogPost.objects.filter(my_filter).select_related()

Но ForeignKey находится на Comment, а не BlogPost, поэтому select_related() не префикс комментариев. Есть ли способ заставить это работать?

Я не могу отменить запрос (Comment.objects...), потому что тогда другие объекты, которые select_related() не будут извлекать, не будут работать. Мне нужно, чтобы он работал в обоих направлениях.

4b9b3361

Ответ 1

Почему вы не получите комментарии, а затем используйте regroup тег шаблона, чтобы отобразить их:

# Select all Comments with BlogPost data - one query
comments = Comment.objects.select_related('blog_post').order_by('-blog_post').all()

Затем в шаблоне:

{% regroup comments by blog_post as posts %}
{% for blog_post in posts %}

    <p>Blog post {{ blog_post.title }}</p>
    <ul>
    {% for comment in blog_post.comments %}
    ...
    {% endfor %}
    </ul>
    </p>
{% endfor %}