Menu
CoddyTech

Actualizar y eliminar

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

Los precios cambian y los libros desaparecen de la estantería. Para cambiar un libro, establece su atributo y llama a save(); sin save(), la tabla conserva el valor anterior. Para cambiar varias filas a la vez, llama a update() en un QuerySet. Ejecuta una sola instrucción UPDATE y devuelve cuántas filas cambiaron. delete() funciona de la misma manera y devuelve cuántas filas eliminó, en total y por modelo:

Book.objects.filter(year__lt=1900).update(price="5.00")   # 2
Book.objects.filter(price__gt=14).delete()   # (1, {'books.Book': 1})

Ambos actúan exactamente sobre las filas del QuerySet, así que primero filtra. Book.objects.update(is_read=True) marca todos los libros, y ninguno de los dos métodos pregunta antes de actuar.

challenge icon

Desafío

Fácil

En explore.py, antes del último print:

  1. Dune está de oferta: establece su precio en 7.99.
  2. Marca como leídos todos los libros de Jane Austen en una sola consulta.
  3. Elimina todos los libros de misterio en una sola consulta.

Pulsa «Ejecutar»: la consola muestra 7 books on the shelf.

Pruébalo tú mismo

from books.models import Book

# 1. Dune está en oferta: establece su precio en 7.99.

# 2. Marca como leído cada libro de Jane Austen.

# 3. Regala todos los libros de misterio.

print(Book.objects.count(), "books on the shelf")
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