Menu
CoddyTech

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',).

challenge icon

Sfida

Medio

Riscrivi explore.py per stampare due righe:

  1. Cheapest: e il titolo del libro meno costoso.
  2. 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

Esercitati da solo: Playground Django