Query for top x elements in Django

2020-06-30 04:26发布

I have two models such that

class JobTitle(models.Model):
     name = models.CharField(max_length=1000)

class Employer(models.Model): 
     jobtitle = models.ForeignKey(JobTitle,unique=False,null=True)

As you see, one employer may have many jobtitles. I try to make a query to get top 5 employers whose number of job titles is maximum

How can I achive this is Django ?

Thanks

2条回答
够拽才男人
2楼-- · 2020-06-30 04:41
Employer.objects.values('id').annotate(jobtitle_count=Count('jobtitle')).order_by('-jobtitle_count')[:5]
查看更多
淡お忘
3楼-- · 2020-06-30 04:59
from django.db.models import Count

Employer.objects.annotate(Count('jobtitle')).order_by('-jobtitle__count')[:5]
查看更多
登录 后发表回答