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.

Encontrar el libro más barato, el más reciente o todos los títulos ordenados del más antiguo al más reciente significa ordenar primero los libros. order_by() ordena un QuerySet por un campo, al igual que ordering en Meta lo hace para todos, 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("author", flat=True) omite los objetos Book y devuelve los valores en sí: 'Mary Beard'. Sin flat=True, cada valor viene en una tupla de un elemento: ('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, empezando por el libro más antiguo. Imprime la lista en sí.

Pulsa «Ejecutar»: la Consola muestra Cheapest: Pride and Prejudice, después Titles by year: ['Pride and Prejudice', 'Emma', 'The Murder of Roger Ackroyd', 'The Hobbit', 'Foundation', 'Dune', 'The Name of the Rose', 'Neuromancer', 'SPQR'].

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