Django annotate count выдает неправильный результат
Предположим
class Comment(models.Model):
...
likes = models.ManyToManyField(User,...)
class Post
...
content = models.CharField(...)
likes = models.ManyToManyFiled(User,...)
comment = models.ManyToManyField(Comment,...)
Теперь, если я запущу
Statement1
Post.objects.annotate(likecount=Count('likes')).values('content','likecount')
Выход:
<QuerySet [{'content': 'delta', 'likecount': 3}, {'content': 'gamma', 'likecount': 6}, {'content': 'beta', 'likecount': 7}, {'content': 'alpha', 'likecount': 3}]>
Statement2
Post.objects.annotate(commentlikecount=Count('comment__likes')).values('content','commentlikecount')
Выход:
<QuerySet [{'content': 'delta', 'commentlikecount': 6}, {'content': 'gamma', 'commentlikecount': 0}, {'content': 'beta', 'commentlikecount': 3}, {'content': 'alpha', 'commentlikecount': 0}]>
Statement3
Post.objects.annotate(likecount=Count('likes'),commentlikecount=Count('comment__likes')).values('content','likecount','commentlikecount')
Выход:
<QuerySet [{'content': 'delta', 'likecount': 18, 'commentlikecount': 18}, {'content': 'gamma', 'likecount': 6, 'commentlikecount': 0}, {'content': 'beta', 'likecount': 21, 'commentlikecount': 21}, {'content': 'alpha', 'likecount': 3, 'commentlikecount': 0}]>
Почему вывод третьего оператора такой, а не
?<QuerySet [{'content': 'delta', 'likecount': 3, 'commentlikecount': 6}, {'content': 'gamma', 'likecount': 6, 'commentlikecount': 0}, {'content': 'beta', 'likecount': 7, 'commentlikecount': 3}, {'content': 'alpha', 'likecount': 3, 'commentlikecount': 0}]>
Как я могу получить это в качестве вывода?