Datensätze sortieren
Teil des Abschnitts Modelle und Admin-Bereich der Django-Journey von Coddy. Lektion 11 von 23.
Das günstigste Buch, das neueste oder alle Titel vom ältesten bis zum neuesten zu finden, bedeutet, die Bücher zuerst zu sortieren. order_by() sortiert ein QuerySet nach einem Feld, so wie ordering in Meta es für alle tut; ein Minuszeichen sortiert absteigend. first() gibt die erste Zeile oder None zurück, wenn es keine gibt. Anders als get() löst es daher niemals eine Ausnahme aus:
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) überspringt die Book-Objekte und gibt die Werte selbst zurück: 'Mary Beard'. Ohne flat=True wird jeder Wert in einem Tupel mit einem Element zurückgegeben: ('Mary Beard',).
Aufgabe
MittelSchreibe explore.py so um, dass zwei Zeilen ausgegeben werden:
Cheapest:und der Titel des günstigsten Buches.Titles by year:und eine Liste aller Titel, beginnend mit dem ältesten Buch. Gib die Liste selbst aus.
Drücke auf „Ausführen“: In der Konsole steht Cheapest: Pride and Prejudice, danach Titles by year: ['Pride and Prejudice', 'Emma', 'The Murder of Roger Ackroyd', 'The Hobbit', 'Foundation', 'Dune', 'The Name of the Rose', 'Neuromancer', 'SPQR'].
Probier es selbst
from books.models import Book
# 1. Günstigstes Buch: der Titel des günstigsten Buches
# 2. Titel nach Jahr: alle Titel, beginnend mit dem ältesten Buch, als Liste
Alle Lektionen in Modelle und Admin-Bereich
2Abfragen mit dem ORM
Datensätze erstellenAlle und AbrufenFiltern und SuchabfragenDatensätze zählenDatensätze sortierenAktualisieren und LöschenÜbe selbstständig: Django-Playground