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.
Desafío
FácilEn explore.py, antes del último print:
Duneestá de oferta: establece su precio en7.99.- Marca como leídos todos los libros de
Jane Austenen una sola consulta. - 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")
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