Menu
CoddyTech

Сортировка записей

Часть раздела Модели и панель администратора путешествия по 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() пропускает объекты Book и возвращает значения одного поля. Без flat=True каждое значение содержится в кортеже из одного элемента, например ('Mary Beard',).

challenge icon

Задание

Средне

Перепиши explore.py, чтобы вывести две строки:

  1. Cheapest: и название самой дешёвой книги.
  2. Titles by year: и список всех названий, начиная с самой старой книги.

Нажми Run. В консоли отображается Cheapest: Pride and Prejudice и Titles by year: ['Pride and Prejudice', 'Emma', ...].

Попробуйте сами

from books.models import Book

# 1. Самая дешёвая: название самой дешёвой книги

# 2. Названия по годам: названия всех книг в виде списка, начиная с самой старой

Все уроки раздела Модели и панель администратора

Потренируйтесь самостоятельно: Песочница Django