Ho un modello come questo:Come ottenere più recente di molti gruppi in una sola volta
class Foo(models.Model):
date = models.DateTimeField()
language = models.TextField()
# other stuff
e voglio raggruppare i Foo
s per lingua, quindi ottenere il più recente in ciascun gruppo. Non sono stato in grado di capire come utilizzare l'API QuerySet
di django per fare ciò (onestamente, non so come farlo in SQL). Così, per esempio:
pk | date | language
---+--------+------------------
1 | 1:00 | python
2 | 1:30 | python/django
3 | 1:45 | haskell
4 | 2:15 | python
5 | 2:45 | haskell
voglio ottenere qualcosa di simile a questo risultato:
{ 'python': 4, 'python/django': 2, 'haskell': 5 }
dove forse al posto dei numeri completato tali verifiche Foo
oggetti.
Avete una tabella separata per le lingue? In questo caso probabilmente saresti in grado di estrarre quei dati usando anotate() o qualcosa del genere. – Agonych
@ Agonych, non vedo come sia importante avere un tavolo per le lingue. Stai suggerendo di tenere traccia dell'ultimo 'Foo' come un campo nella tabella delle lingue? – luqui
No, ma è possibile estrarre la data più recente per ogni record con annotate (latest_date = Max ('foos__date') (fornendo foos is many_to_many con Foo) o utilizzando la funzione get_max_date() nel modello Language. – Agonych