brsbilgic
brsbilgic

Reputation: 11843

Query for top x elements in Django

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

Upvotes: 44

Views: 48750

Answers (2)

Jj.
Jj.

Reputation: 3160

from django.db.models import Count

Employer.objects.annotate(Count('jobtitle')).order_by('-jobtitle__count')[:5]

Upvotes: 11

DrTyrsa
DrTyrsa

Reputation: 31991

Employer.objects.values('id').annotate(jobtitle_count=Count('jobtitle')).order_by('-jobtitle_count')[:5]

Upvotes: 61

Related Questions