Stellen wir das Django ORM-Modell Meetup
mit folgenden Definition haben:Django ORM - Holen Sie sich aktuellen Rekord für Gruppe
class Meetup(models.Model):
language = models.CharField()
date = models.DateField(auto_now=True)
Ich mag würde die neuesten Clubs für jede Sprache holen.
Es scheint, Sie Django Aggregates nutzen könnten diese Lookup einfach zu machen:
Meetup.objects.annotate(latest_date=Max("date")).values("language", "latest_date")
In meinem Kopf sollte die „neuesten“ meetup für jede Sprache holen. Aber das ist 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 erwartete, nur die zwei 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 mein Backend.
Meetup.objects.filter (language = "Python") order_by ('- date') [0] –
@VictorCastilloTorres leid, es war nicht klar. - Ziel ist es, das einzigartige Meetup in einer einzigen Abfrage zu erhalten. –