Сортировка записей
Часть раздела Модели и панель администратора путешествия по Django на Coddy. Урок 11 из 23.
Поиск самой дешёвой книги, самой новой или всех названий от самых старых к самым новым — всё это сначала требует сортировки книг. order_by() сортирует один QuerySet по полю, как это делает ordering в Meta для всех объектов, а знак минус задаёт сортировку от большего к меньшему. first() возвращает первую строку или None, если строк нет, поэтому, в отличие от get(), никогда не вызывает исключение:
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) пропускает объекты Book и возвращает сами значения: 'Mary Beard'. Без flat=True каждое значение возвращается в кортеже из одного элемента: ('Mary Beard',).
Задание
СреднеПерепиши explore.py, чтобы вывести две строки:
Cheapest:и название самой дешёвой книги.Titles by year:и список всех названий, начиная с самой старой книги. Выведи сам список.
Нажми «Играть»: в консоли появится Cheapest: Pride and Prejudice, а затем Titles by year: ['Pride and Prejudice', 'Emma', 'The Murder of Roger Ackroyd', 'The Hobbit', 'Foundation', 'Dune', 'The Name of the Rose', 'Neuromancer', 'SPQR'].
Попробуйте сами
from books.models import Book
# 1. Самая дешёвая: название самой дешёвой книги
# 2. Названия по годам: названия всех книг в виде списка, начиная с самой старой
Все уроки раздела Модели и панель администратора
2Запросы с помощью ORM
Создание записейAll и GetФильтрация и поискПодсчёт записейСортировка записейОбновление и удалениеПотренируйтесь самостоятельно: Песочница Django