Django ORM - Holen Sie sich den neuesten Datensatz für die Gruppe
Stellen Sie sich vor, wir haben das Django ORM-ModellMeetup
mit folgender Definition:
class Meetup(models.Model):
language = models.CharField()
date = models.DateField(auto_now=True)
Ich möchte das neueste Treffen für jede Sprache abrufen.
Es scheint, als könntest du es gebrauchenDjango-Aggregate um diese Suche zu vereinfachen:
Meetup.objects.annotate(latest_date=Max("date")).values("language", "latest_date")
Meiner Meinung nach sollte dies das "neueste" Treffen für jede Sprache abrufen. Das ist aber nicht der Fall:
>>> 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
Ich habe erwartet, nur die beiden neuesten Python- und Node-Meetups zu bekommen!
Wie kann ich eine Abfrage erstellen, die nur die neuesten Meetups für jede Sprache abruft?
PS. Ich benutze MySQL als Backend.