Menu
CoddyTech

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

challenge icon

Aufgabe

Mittel

Schreibe explore.py so um, dass zwei Zeilen ausgegeben werden:

  1. Cheapest: und der Titel des günstigsten Buches.
  2. 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

Übe selbstständig: Django-Playground