Если у меня есть такая модель
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 запрос, который даст мне одна запись для каждого типа type
с самым высоким version
? Итак, этот результат:
Queryset< Thing(name = "foo2", version = 2, type = "A"),
Thing(name = "bar3", version = 3, type = "B") >
Я смотрел на документы здесь; https://docs.djangoproject.com/en/3.0/topics/db/aggregation/
И легко сделать что-то подобное;
Thing.objects.aggregate(Max('version'))
Но это дало бы мне Thing(name = "bar3", version = 3, type = "B")