在表中获取最高DUPLICATE结果(仅有1个查询)

时间:2014-01-10 08:15:50

标签: python django

假设我有一个模型:

class People(models.Model):
    name = models.CharField(max_length=200)
    age = models.PositiveIntegerField()

这是它的当前数据:

name   age
Bob    18
Carly  20
Steve  20
John   20
Ted    19
Judy   17

如何获得最重复的内容?因此:

name   age
Carly  20
Steve  20
John   20

我无法在单个 django查询中找到该怎么做。我可以通过按年龄排序,然后找到具有最佳年龄的完全匹配,但这需要两个查询。

2 个答案:

答案 0 :(得分:2)

使用QuerySet.extra

people = People.objects.extra(where=['age=(select max(age) from app_people)'])

people = People.objects.extra(where=['age=(select max(age) from {})'.format(
    People._meta.db_table
)])

答案 1 :(得分:1)

People.objects.filter(age=People.objects.order_by('-age')[0].age)

但它的两个问题分为一个