【发布时间】:2013-07-27 01:28:10
【问题描述】:
假设我们有 Django ORM 模型Meetup,其定义如下:
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 作为我的后端。
【问题讨论】:
-
Meetup.objects.filter(language="python").order_by('-date')[0]
-
@VictorCastilloTorres 抱歉,不清楚 - 目标是在一个查询中获得所有独特的聚会。