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 las estanterías. Para cambiar un libro, establece su atributo y llama a save(); sin save(), la tabla conserva el valor anterior. Para cambiar muchas 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 se eliminaron, 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 pide confirmación antes de actuar.

challenge icon

Desafío

Fácil

En explore.py, encima del último print:

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

Pulsa Run. La consola muestra 7 books on the shelf, y la pestaña Data muestra Dune a 7.99 y ningún libro de misterio.

Pruébalo tú mismo

from books.models import Book

# 1. Dune está en oferta: fija 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