Wyobraź mamy model Django ORM Meetup
z następującą definicję:Django ORM - Pobierz najnowszą płytę dla grupy
class Meetup(models.Model):
language = models.CharField()
date = models.DateField(auto_now=True)
chciałbym pobierze najnowszą Meetup dla każdego języka.
Wydaje się, można użyć Django Aggregates aby to wyszukiwanie proste:
Meetup.objects.annotate(latest_date=Max("date")).values("language", "latest_date")
w moim umyśle to powinno pobrania „najnowszej” Meetup dla każdego języka. Ale tak nie jest:
>>> 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
Spodziewałem się uzyskać tylko dwa najnowsze spotkania Python i Node!
Jak mogę utworzyć zapytanie, które będzie pobierać tylko najnowsze spotkania dla każdego języka?
PS. Używam MySQL jako mojego zaplecza.
Meetup.objects.filter (language = "python") order_by ('- data') [0] –
@VictorCastilloTorres przykro nie było jasne. - celem jest uzyskanie wszystkich unikalnych spotkań w jednym zapytaniu. –