假設我們有如下定義Django的ORM模型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作爲後端。
Meetup.objects.filter(語言= 「蟒蛇」)ORDER_BY( ' - 日期')[0] –
@VictorCastilloTorres遺憾,目前還不清楚。 - 目標是在單個查詢中獲得所有獨特的聚會。 –