Для подсчета количества комментариев под постом с помощью функции annotate() можно использовать следующий код:
```python
from django.db.models import Count
from django.shortcuts import render
from .models import Post, Comment
def post_detail(request, post_id):
post = Post.objects.get(id=post_id)
comments = Comment.objects.filter(post=post_id)
comment_count = comments.count()
return render(request, 'post_detail.html', {'post': post, 'comment_count': comment_count})
```
Чтобы изменить метод get_context_data() в вашем коде для вывода количества комментариев к определенному посту с использованием ForeignKey и аннотации в ключе контекста comment_count, нужно сделать следующее:
```python
from django.views.generic import DetailView
from .models import Post
class PostDetailView(DetailView):
model = Post
template_name = 'post_detail.html'
def get_context_data(self, **kwargs):
context = super().get_context_data(**kwargs)
post_id = self.object.id
post_comments = self.object.comments.annotate(comment_count=Count('id'))
comment_count = post_comments.count()
context['comment_count'] = comment_count
return context
```
Здесь мы используем аннотацию Count('id') для счетчика комментариев к посту через связь ForeignKey с помощью related_name, которая должна быть указана в вашей модели Comment.