【问题标题】:Query for top x elements in Django在 Django 中查询 top x 元素
【发布时间】:2011-06-22 08:23:05
【问题描述】:

我有两个这样的模型

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

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

如您所见,一位雇主可能有多个职位。我尝试查询职位数量最多的前 5 位雇主

我怎样才能实现这是 Django?

谢谢

【问题讨论】:

  • 有了这个模型,一个雇主怎么可能有多个职位呢?雇主的其他领域在哪里?它只是一个外键?
  • @SeanEd-Man 我猜他的意思是许多Employers 可以拥有相同的JobTitle。

标签: django django-models


【解决方案1】:
Employer.objects.values('id').annotate(jobtitle_count=Count('jobtitle')).order_by('-jobtitle_count')[:5]
【解决方案2】:
from django.db.models import Count

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

【讨论】:

  • 您只需计算Employer 表中的行数。你需要分组。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2018-02-02
  • 2019-09-20
  • 1970-01-01
  • 1970-01-01
  • 2020-12-22
  • 2013-03-01
相关资源
最近更新 更多