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 que puedes recorrer en un bucle; 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 coincidencias, 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 que el programa se bloquee.

Pulsa Run. 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