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.
Desafío
FácilEn explore.py, encima del último print:
Duneestá en oferta: establece su precio en7.99.- Marca como leído cada libro de
Jane Austen, en una sola consulta. - 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")
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
2Consultas con el ORM
Crear filasAll y GetFiltros y búsquedasContar filasOrdenar filasActualizar y eliminar3Páginas desde la base de datos
Una lista desde la base de datosUna página para cada libroPractica por tu cuenta: Playground de Django