Ordinare le righe
Fa parte della sezione Modelli e pannello di amministrazione del percorso Django di Coddy. Lezione 11 di 23.
Trovare il libro meno costoso, quello più recente o tutti i titoli dal più vecchio al più recente significa prima ordinare i libri. order_by() ordina un QuerySet in base a un campo, come fa ordering in Meta per tutti, mentre il segno meno ordina dal valore più alto a quello più basso. first() restituisce la prima riga, oppure None quando non ce n'è nessuna, quindi, a differenza di get(), non genera mai un'eccezione:
Book.objects.order_by("-year").first() # <Book: SPQR by Mary Beard>
Book.objects.order_by("-price").values_list("author", flat=True)
# <QuerySet ['Mary Beard', 'Umberto Eco', ...]>values_list("author", flat=True) salta gli oggetti Book e restituisce i valori stessi: 'Mary Beard'. Senza flat=True, ogni valore è contenuto in una tupla con un solo elemento: ('Mary Beard',).
Sfida
MedioRiscrivi explore.py per stampare due righe:
Cheapest:e il titolo del libro meno costoso.Titles by year:e un elenco di tutti i titoli, dal libro più vecchio al più recente. Stampa l’elenco stesso.
Premi «Esegui»: nella Console compare Cheapest: Pride and Prejudice, poi Titles by year: ['Pride and Prejudice', 'Emma', 'The Murder of Roger Ackroyd', 'The Hobbit', 'Foundation', 'Dune', 'The Name of the Rose', 'Neuromancer', 'SPQR'].
Provalo tu
from books.models import Book
# 1. Il più economico: il titolo del libro meno costoso
# 2. Titoli per anno: tutti i titoli, a partire dal libro più vecchio, in una lista
Tutte le lezioni di Modelli e pannello di amministrazione
2Interrogare con l’ORM
Creare righeTutti e OttieniFiltri e ricercheContare le righeOrdinare le righeAggiornare ed eliminareEsercitati da solo: Playground Django