Immaginiamo di avere il modello di Django ORM Meetup
con la seguente definizione:Django ORM - Get ultimo disco per il gruppo
class Meetup(models.Model):
language = models.CharField()
date = models.DateField(auto_now=True)
mi piacerebbe andare a prendere l'ultimo meetup per ogni lingua.
Sembrerebbe si potrebbe usare Django Aggregates per rendere questa ricerca facile:
Meetup.objects.annotate(latest_date=Max("date")).values("language", "latest_date")
Nella mia mente questo dovrebbe prendere il meetup "ultimo" per ogni lingua. Ma non è questo il caso:
>>> 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
Mi aspettavo di ottenere solo gli ultimi due incontri Python e Node!
Come posso creare una query che recupera solo i meetup più recenti per ogni lingua?
PS. Sto usando MySQL come mio backend.
Meetup.objects.filter (language = "python") order_by ('- data') [0] –
@VictorCastilloTorres dispiace che non era chiaro. - l'obiettivo è ottenere tutto il meetup univoco in una singola query. –