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',).
Wyzwanie
ŚredniPrzepisz explore.py, aby wypisać dwa wiersze:
Cheapest:i tytuł najtańszej książki.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
2Odpytowanie za pomocą ORM
Tworzenie wierszyWszystkie i pobieranieFiltrowanie i wyszukiwanieLiczenie wierszySortowanie wierszyAktualizowanie i usuwaniePoćwicz samodzielnie: Edytor online Django