Menu
CoddyTech

Ordenar filas

Parte de la sección Modelos y el panel de administración del Journey de Django de Coddy. Lección 11 de 23.

El libro más barato, el más reciente, todos los títulos del más antiguo al más nuevo: cada uno es una pregunta sobre el orden. order_by() ordena un QuerySet por un campo, igual que ordering en Meta lo hace para todos ellos, y un signo menos ordena de mayor a menor. first() devuelve la primera fila, o None si no hay ninguna, así que, a diferencia de get(), nunca genera una excepción:

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() omite los objetos Book y devuelve los valores de un campo. Sin flat=True, cada valor viene en una tupla de un elemento, como ('Mary Beard',).

challenge icon

Desafío

Intermedio

Reescribe explore.py para imprimir dos líneas:

  1. Cheapest: y el título del libro más barato.
  2. Titles by year: y una lista de todos los títulos, con el libro más antiguo primero.

Pulsa Run. La consola muestra Cheapest: Pride and Prejudice y Titles by year: ['Pride and Prejudice', 'Emma', ...].

Pruébalo tú mismo

from books.models import Book

# 1. Más barato: el título del libro más barato

# 2. Títulos por año: todos los títulos, empezando por el libro más antiguo, en una lista

Todas las lecciones de Modelos y el panel de administración

Practica por tu cuenta: Playground de Django