Menu
CoddyTech

All y Get

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

Antes de que una página pueda mostrar un libro, tu código tiene que volver a leerlo. Book.objects.all() devuelve un QuerySet, un objeto similar a una lista por el que puedes iterar; cada elemento es un Book con sus campos como atributos. get() obtiene exactamente una fila:

for book in Book.objects.all():
    print(book.author, book.year)

emma = Book.objects.get(title="Emma")
print(emma.year)   # 1815

get() espera una coincidencia. Si no hay ninguna, se produce Book.DoesNotExist; si hay varias, se produce Book.MultipleObjectsReturned, y puedes capturarlas como cualquier otra excepción. Dos libros de aquí son de Jane Austen:

try:
    Book.objects.get(author="Jane Austen")
except Book.MultipleObjectsReturned:
    print("More than one")

Si no se captura, la excepción detiene el script en esa línea.

challenge icon

Desafío

Fácil

Reescribe explore.py:

  1. Imprime el título de cada libro, uno por línea.
  2. Obtén Dune e imprime Dune costs y su precio: Dune costs 9.99.
  3. Busca Ulysses, que no está en la estantería, e imprime Ulysses is not on the shelf en lugar de provocar un error.

Pulsa «Ejecutar»: la consola muestra los nueve títulos y, después, las dos frases.

Pruébalo tú mismo

from books.models import Book

# 1. Imprime el título de cada libro, uno por línea.

# 2. Obtén Dune e imprime su precio.

# 3. Busca Ulysses.
quiz iconPonte a prueba

Esta lección incluye un breve cuestionario. Empieza la lección para responderlo y registrar tu progreso.

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

Practica por tu cuenta: Playground de Django