Django 如何筛选一个字段中最高值的查询集,并按另一个字段中的每个值分组?

Django 如何筛选一个字段中最高值的查询集,并按另一个字段中的每个值分组?,django,aggregate,django-queryset,Django,Aggregate,Django Queryset,如果我有一个这样的模型 from django.db import models class Thing(models.Model): name = models.CharField(max_length=255, unique = True, null=False) version = models.IntegerField(null = False) type = models.CharField(max_length=255, null=False) 我有很多

如果我有一个这样的模型

from django.db import models

class Thing(models.Model):
    name = models.CharField(max_length=255, unique = True, null=False)
    version = models.IntegerField(null = False)
    type = models.CharField(max_length=255, null=False)

我有很多条目,比如

Thing.objects.create(name = "foo1", version = 1, type = "A")
Thing.objects.create(name = "foo2", version = 2, type = "A")
Thing.objects.create(name = "bar1", version = 1, type = "B")
Thing.objects.create(name = "bar2", version = 2, type = "B")
Thing.objects.create(name = "bar3", version = 3, type = "B")
如何编写一个Django查询,为最高版本的
类型
的每种类型提供一个条目?因此,这个结果:

Queryset< Thing(name = "foo2", version = 2, type = "A"), 
Thing(name = "bar3", version = 3, type = "B") >

但是这只会给我提供
东西(name=“bar3”,version=3,type=“B”)
这个组按
类型进行分组,并按max
版本进行过滤:

Things.objects.values('type').annotate(max_version=Max('version'))
Things.objects.values('type').annotate(max_version=Max('version'))