как перенести этот код {{post.author.posts.count}} из Html в views.py

В html есть код {{post.author.posts.count}}, который подсчитывает количество постов автора. У меня такой вопрос, как сделать так чтобы подсчет происходил в views.py. Сейчас код там выглядит так.

def post_detail(request, post_id):
    post = get_object_or_404(Post, id=post_id)
    context = {
        'post': post,
    }
    return render(request, 'posts/post_detail.html', context)

Класс в моделях:

class Post(models.Model):
text = models.TextField(verbose_name='Текст')
pub_date = models.DateTimeField(
    auto_now_add=True,
    verbose_name='Дата публикации'
)
group = models.ForeignKey(
    Group,
    on_delete=models.SET_NULL,
    blank=True,
    null=True,
    related_name='posts',
    verbose_name='Группа',
)
author = models.ForeignKey(
    User,
    on_delete=models.CASCADE,
    related_name='posts',
    verbose_name='Автор',
)

def __str__(self):
    return self.text

Мне нужно получить количество постов у автора. Для этого нужно найти имеющейся пост, у него найти автора и уже по этому автору отсортировать все посты и посчитать общее число постов. Но не понимаю как.


Ответы (1 шт):

Автор решения: igor

Разобрался. По итогу получился такой код.

def post_detail(request, post_id):
post = get_object_or_404(Post, id=post_id)
author = post.author
post_count = Post.objects.filter(author=author).count()
context = {
    'author': author,
    'post_count': post_count,
    'post': post,
}
return render(request, 'posts/post_detail.html', context)
→ Ссылка