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'))