Django: вытащить связанные с пользователем посты
Совсем недавно познакомился с select_related
в Django. У меня наконец то получилось вытащить связанных с моделью пользователей.
Позже, мне захотелось пойти от обратного (т.е вытащить связанные с пользователями посты, но уже из модели User). Я попытался пойти тем же путем. Прочитал, что для обратной совместимости, нужно указать параметр related_name
в модели Post
. Дописал код (созданые в процессе поля, я отметил знаком #
для наглядности). Я попробовал несколько вариаций, но у меня так ничего и не заработало. Помогите разрешить данные вопросы. А конекретно:
- как правильно состовить запрос в
views.py
, что бы получить список пользователй со связанными постами, не нагружая бд. - как отобразить этот запрос в
html
что бы получить последовательность типа{% for author in authors %} {{ author }} {{ author.post_author }} {% endfor %}
models.py
User = get_user_model()
class Post(models.Model):
title = models.CharField(max_length=50)
author = models.ForeignKey(User, on_delete=models.CASCADE, null=True, related_name='post_authors')
view.py
def index(request):
template_name = 'blog/index.html'
posts = Post.objects.select_related('author')
# authors = User.objects.select_related('post_authors')
context = {'posts': posts,
#'authors': authors
}
return render(request, template_name, context)
index.html
{% for post in posts %}
{{ post.title }}
{{ post.author }}
{% endfor %}
#{% for author in authors %}
# {{ author }}
# {{ author.post_authors }}
#{% endfor %}
Источник: Stack Overflow на русском