Menu
CoddyTech

Sortowanie wierszy

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

Najtańsza książka, najnowsza, wszystkie tytuły od najstarszego: każde z tych pytań dotyczy kolejności. order_by() sortuje jeden QuerySet według pola, tak jak ordering w Meta robi to dla wszystkich, a minus sortuje od wartości wysokich do niskich. first() zwraca pierwszy wiersz albo None, gdy 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() pomija obiekty Book i zwraca wartości jednego pola. Bez flat=True każda wartość jest zwracana jako krotka z jednym elementem, na przykład ('Mary Beard',).

challenge icon

Wyzwanie

Średni

Przepisz explore.py, aby wyświetlał 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.

Naciśnij Run. W konsoli pojawi się Cheapest: Pride and Prejudice oraz Titles by year: ['Pride and Prejudice', 'Emma', ...].

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 postaci listy, od najstarszej książki

Wszystkie lekcje w sekcji Modele i panel administracyjny

Poćwicz samodzielnie: Edytor online Django