想象一下,我们有一个Meetup
具有以下定义的 Django ORM 模型:
class Meetup(models.Model):
language = models.CharField()
date = models.DateField(auto_now=True)
我想获取每种语言的最新聚会。
看起来你可以使用Django Aggregates来简化这个查找:
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 作为我的后端。