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 в качестве моего бэкэнда.

Ответы на вопрос(1)

Ваш ответ на вопрос