Я пытаюсь понять пример из книги "Django by Example".
Есть приложение блога с тегами.
models.py
class Post(models.Model):
# ...
tags = TaggableManager()
views.py
def post_detail(request, pk):
post = get_object_or_404(Post, pk=pk)
# List of similar posts
post_tags_ids = post.tags.values_list('id', flat=True)
similar_posts = Post.published.filter(tags__in=post_tags_ids)\
.exclude(id=post.id)
similar_posts = similar_posts.annotate(same_tags=Count('tags'))\
.order_by('-same_tags','-publish')[:4]
return render(request, 'blog/post_detail.html', {'post': post,
'similar_posts': similar_posts})
С моей точки зрения,
annotate(same_tags=Count('tags'))
будет подсчитывать все теги в каждом сообщении в похожем наборе запросов Queryset. Почему он выбирает и суммирует только те же теги, что и в моем посте?
Заранее спасибо