Django ORM - Получить последнюю запись для группы
Представьте, что у нас есть модель Django ORMMeetup
со следующим определением:
class Meetup(models.Model):
language = models.CharField()
date = models.DateField(auto_now=True)
Я хотел бы получить последнюю встречу для каждого языка.
Казалось бы, вы могли бы использоватьДжанго Агрегаты чтобы сделать этот поиск простым:
Meetup.objects.annotate(latest_date=Max("date")).values("language", "latest_date")
На мой взгляд, это должно привести к «последней» встрече для каждого языка. Но это не тот случай:
>>> Meetup.objects.create(language='python')
<Meetup: Meetup object>
>>> Meetup.objects.create(language='python')
<Meetup: Meetup object>
>>> Meetup.objects.create(language='node')
<Meetup: Meetup object>
>>> Meetup.objects.create(language='node')
<Meetup: Meetup object>
>>> Meetup.objects.annotate(latest_date=Max("date")).values("language", "latest_date").count()
4
Я ожидал получить только две последние встречи Python и Node!
Как я могу построить запрос, который будет выбирать только самые последние встречи для каждого языка?
PS. Я использую MySQL в качестве моего бэкэнда.