Django тег git с графом: пример из книги - PullRequest
0 голосов
/ 22 апреля 2020

Я пытаюсь понять пример из книги "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. Почему он выбирает и суммирует только те же теги, что и в моем посте?

Заранее спасибо

...