Menu
CoddyTech

Sortowanie wierszy

Część sekcji Modele i panel administracyjny ścieżki Django w Coddy. Lekcja 11 z 23.

Znalezienie najtańszej książki, najnowszej książki lub wszystkich tytułów od najstarszego do najnowszego wymaga najpierw posortowania książek. order_by() sortuje jeden QuerySet według pola, tak jak ordering w Meta robi to dla wszystkich książek, a minus sortuje od największej wartości do najmniejszej. first() zwraca pierwszy wiersz lub None, jeśli go nie ma, więc w przeciwieństwie do get() nigdy nie zgłasza wyjątku:

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) pomija obiekty Book i zwraca same wartości: 'Mary Beard'. Bez flat=True każda wartość jest zwracana jako jednoelementowa krotka: ('Mary Beard',).

challenge icon

Wyzwanie

Średni

Przepisz explore.py, aby wypisać dwa wiersze:

  1. Cheapest: i tytuł najtańszej książki.
  2. Titles by year: i listę wszystkich tytułów, zaczynając od najstarszej książki. Wypisz samą listę.

Naciśnij „Uruchom”: w konsoli pojawi się Cheapest: Pride and Prejudice, a następnie Titles by year: ['Pride and Prejudice', 'Emma', 'The Murder of Roger Ackroyd', 'The Hobbit', 'Foundation', 'Dune', 'The Name of the Rose', 'Neuromancer', 'SPQR'].

Spróbuj swoich sił

from books.models import Book

# 1. Najtańsza: tytuł najtańszej książki

# 2. Tytuły według roku: wszystkie tytuły w formie listy, zaczynając od najstarszej książki

Wszystkie lekcje w sekcji Modele i panel administracyjny

Poćwicz samodzielnie: Edytor online Django