【发布时间】:2021-01-13 18:01:48
【问题描述】:
我正在尝试通过计算他们帖子的点赞数并对其进行排序,从而为最受点赞的用户创建排行榜。
但是,如果用户有 2 个或更多帖子,它将在排行榜中复制该用户以及他拥有的总点赞数。有没有办法来解决这个问题?谢谢。
models.py:
class Post(models.Model):
user = models.ForeignKey(User, on_delete=models.CASCADE)
post_id = models.UUIDField(primary_key=True, default=uuid.uuid4, editable=False)
content = models.TextField(max_length=1500, verbose_name='Content')
likes = models.ManyToManyField(User)
views.py:
def top_user(request):
top_user = Post.objects.annotate(total_likes=Count('user__post__likes')).order_by('-total_likes')
context = {'users': top_user}
return render(request, 'blog/top_user.html', context)
html:
{% for top in users %}
<h5>{{ top.user }}</h5>
<p>Upvotes: {{ top.total_likes }}</p>
{% endfor %}
【问题讨论】: