Saltar a contenido

Actualización de Datos

1. Introducción

Las operaciones de actualización de datos son fundamentales en cualquier aplicación que trabaje con bases de datos, ya que permiten modificar la información almacenada. En SQL, la operación de actualización se realiza con el comando UPDATE. Esta operación permite cambiar valores existentes en una o varias filas de una tabla sin necesidad de eliminar los registros o añadir nuevos.

En este tema, vamos a continuar con el proyecto del blog y aprenderemos a realizar operaciones de actualización y eliminación de datos utilizando el ORM de Django.

Ejemplo SQL de actualización

UPDATE authors SET name = 'Nuevo Nombre' WHERE id = 1;

2. Modificaciones

Primero, vamos a crear una ruta \update\ en urls.py para actualizar los datos de un autor. Esta ruta será gestionada por la vista update que definiremos en views.py.

2.1 Crear la ruta update/

En el archivo urls.py de la app posts, añadimos la ruta update/, que apuntará a la vista encargada de actualizar el autor.

# posts/urls.py
from django.urls import path
from . import views

urlpatterns = [
    path('update/', views.update, name='update'),
]

2.2 Definir la función update en views.py

En views.py, creamos la función update, que se encargará de actualizar los datos del primer autor (id=1). De momento, no pasaremos parámetros en la URL para hacerlo, y simplemente modificaremos el autor con id=1 de manera fija.

# posts/views.py
from django.http import HttpResponse
from posts.models import Author

def update(request):
    # Buscar el primer autor
    author = Author.objects.get(id=1)

    # Actualizar su nombre y correo
    author.name = 'Nuevo Nombre'
    author.email = 'nuevoemail@example.com'

    # Guardar los cambios
    author.save()

    # Devolver una respuesta HTTP con el resultado
    return HttpResponse(f'Autor con ID {author.id} actualizado: {author.name} ({author.email})')

2.3 Comprobar la actualización

Ahora, navega a http://127.0.0.1:8000/posts/update/ en tu navegador para ejecutar la vista update. El autor con id=1 será actualizado, y deberías ver un mensaje que confirma la actualización.

Para verificar que los cambios se reflejan en la base de datos, accede a la base de datos y consulta los datos del autor con id=1.

# Para acceder al shell de Django y verificar los datos
python manage.py dbshell

# Consultar el autor con id=1
SELECT * FROM posts_author WHERE id = 1;

3. Eliminar Datos

Ahora, vamos a crear una funcionalidad similar para eliminar un autor de la base de datos. Vamos a añadir un autor con id=51, luego crearemos la ruta \delete\ y la vista delete para eliminar dicho autor.

3.1 Crear un autor de prueba

Primero, creamos un autor con id=51 para poder eliminarlo después. Puedes hacerlo desde el shell de Django:

# Acceder al shell de Django
python manage.py shell

# Crear un autor con id=51
from posts.models import Author
Author.objects.create(id=51, name='Autor de Prueba', email='autor51@example.com')

3.2 Crear la ruta delete/

En urls.py, creamos una nueva ruta delete/ para eliminar un autor. Esta ruta será gestionada por la vista delete.

# posts/urls.py
urlpatterns += [
    path('delete/', views.delete, name='delete'),
]

3.3 Definir la función delete en views.py

En views.py, definimos la función delete que eliminará al autor con id=51 de la base de datos.

# posts/views.py
from django.http import HttpResponse
from posts.models import Author

def delete(request):
    # Buscar el autor con id=51
    try:
        author = Author.objects.get(id=51)
        author.delete()  # Eliminar el autor
        return HttpResponse(f'Autor con ID {author.id} eliminado con éxito.')
    except Author.DoesNotExist:
        return HttpResponse('El autor con ID 51 no existe.')

3.4 Comprobar la eliminación

Ahora, navega a http://127.0.0.1:8000/posts/delete/ en tu navegador para ejecutar la vista delete. El autor con id=51 será eliminado, y deberías ver un mensaje que confirma su eliminación.

Para verificar que el autor ha sido eliminado de la base de datos, consulta la tabla de autores:

# Para acceder al shell de Django y verificar la eliminación
python manage.py dbshell

# Verificar que el autor con id=51 ya no existe
SELECT * FROM posts_author WHERE id = 51;

Si el autor ha sido eliminado correctamente, no aparecerá en los resultados.


4. Resumen

En este tema, hemos aprendido a realizar operaciones de actualización y eliminación de datos utilizando el ORM de Django. Vimos cómo:

  1. Actualizar los datos de un autor utilizando la vista update.
  2. Eliminar un autor utilizando la vista delete.
  3. Verificamos que los cambios se reflejan correctamente en la base de datos utilizando Django shell.

Estas operaciones son esenciales para modificar y gestionar los datos en nuestras aplicaciones Django.