获取前 3 名用户的 Django 查询集

Django queryset to get Top 3 users

我有一个模型:

class RnR(models.Model):
    emp_sent = models.CharField(null=True, blank=True, max_length=122)
    badgename = models.CharField(null=True, blank=True, max_length=122)
    message = models.CharField(null=True, blank=True, max_length=122)
    emp_recvd = models.CharField(null=True, blank=True, max_length=122)
    date = models.DateField(null=True, blank=True)

现在 table 中的数据将采用以下方式(示例):

emp_sent badgename message emp_recvd date
Tony great job good Steve 01/01/2020
Tony thank you thanks Nat 04/02/2020
Steve great job nice Tony 05/02/2020
Steve congo nice Nat 05/04/2020
Bruce great job nice work Clint 05/06/2020
Nat congo nice Bruce 25/06/2020
Steve great job nice Nat 05/07/2020
Nat thank you nice work Tony 15/07/2020
Steve great job nice Bruce 03/09/2020

现在我想编写一个查询集,为我提供前 3 位发件人的姓名(在上面的示例中,依次为 Steve、Nat 和 Tony)以及一些其他详细信息,例如 badgename 和发送和接收的次数。它的外观如下:

(注意:以下table只是为了让我的问题更清楚,在我的实际代码中,我将使用Django上下文在Bootstrap轮播中显示此信息)

Rank Employee Name Badgename Sent Received
1 Steve great job 3 1
congo 1 0
thank you 0 0
2 Nat great job 0 1
congo 1 1
thank you 1 1
3 Tony great job 1 1
congo 0 0
thank you 1 1

我也想对 Top 3 接收者做同样的事情,但我会根据对此的答案来解决。

请告诉我我需要的查询集或任何其他可用的解决方案。谢谢!

Annotate count and group by values as documented using values()

所以

RnR.objects.all().values('emp_sent').annotate(total=Count('emp_sent')).order_by('-total')[:3]