Crear y Eliminar Objetos ORM¶
1. Introducción¶
En este tema vamos a trabajar con los objetos ORM de Django, específicamente con el modelo Comentario creado previamente. Aprenderemos a crear y eliminar objetos en la base de datos utilizando el ORM de Django.
Es importante tener en cuenta que aún no estamos utilizando formularios, solo trabajaremos con el código del backend para manipular estos objetos.
Objetivos del tema¶
- Crear nuevos objetos del modelo
Comentario. - Eliminar objetos del modelo
Comentario.
2. Estructura del Objeto Comentario¶
Recordemos que el modelo Comentario fue definido anteriormente de la siguiente forma:
# comentarios/models.py
from django.db import models
class Comentario(models.Model):
name = models.CharField(max_length=255)
score = models.IntegerField(default=3)
comment = models.TextField(max_length=1000, null=True)
date = models.DateTimeField(auto_now_add=True)
def __str__(self):
return f'Comentario de {self.name} con puntuación {self.score}'
Este modelo define los siguientes campos:
name: Nombre del autor del comentario.score: Puntuación del comentario.comment: El contenido del comentario.date: Fecha de creación del comentario.
3. Crear un Comentario¶
3.1 Crear la ruta create/¶
Para permitir la creación de comentarios, primero crearemos una nueva ruta create/ en urls.py que apuntará a la vista encargada de crear el comentario.
# comentarios/urls.py
from django.urls import path
from . import views
urlpatterns = [
path('create/', views.create_comentario, name='create_comentario'),
]
3.2 Definir la vista create_comentario¶
En views.py, crearemos la vista que manejará la creación de un comentario. Mostraremos cómo crear el comentario de dos maneras posibles:
- Opción A: Crear el objeto y luego guardarlo con el método
save(). - Opción B: Usar el método
create()para crear y guardar el objeto directamente.
# comentarios/views.py
from django.http import HttpResponse
from comentarios.models import Comentario
from django.http import HttpResponse
# Opción A: Crear el objeto y luego guardarlo
def create_comentario(request):
comentario = Comentario(name='Juan', score=5, comment='Gran artículo!')
comentario.save() # Guardamos el objeto en la base de datos
return HttpResponse('Comentario creado con éxito (usando save()).')
# Opción B: Usar create() para crear y guardar el objeto
def create_comentario_create(request):
Comentario.objects.create(name='Pedro', score=4, comment='Muy interesante.')
return HttpResponse('Comentario creado con éxito (usando create()).')
3.3 Llamar a la ruta para crear comentarios¶
Para probar las vistas creadas, navegamos a http://127.0.0.1:8000/comentarios/create/ para crear un comentario. Puedes realizar esta llamada en tu navegador o en una herramienta como Postman si prefieres trabajar con solicitudes HTTP.
3.4 Comprobar en la base de datos¶
Utiliza la extensión SQLite en VSCode o la terminal para abrir la base de datos y verificar que los comentarios se han creado correctamente en la tabla comentarios.
4. Eliminar un Comentario¶
4.1 Crear la ruta delete/¶
Para eliminar un comentario, crearemos una ruta delete/ que tomará un id como parámetro y eliminará el comentario correspondiente.
# comentarios/urls.py
urlpatterns += [
path('delete/', views.delete_comentario, name='delete_comentario'),
]
4.2 Definir la vista delete_comentario¶
En views.py, crearemos la vista que eliminará un comentario. Mostraremos dos maneras de hacerlo:
- Opción A: Usar el método
delete()directamente sobre el objeto. - Opción B: Usar
filter()y luego llamar adelete()sobre el conjunto de resultados.
# comentarios/views.py
from django.http import HttpResponse
from comentarios.models import Comentario
from django.http import HttpResponse
# Opción A: Usar delete() sobre el objeto
def delete_comentario(request, id):
comentario = Comentario.objects.get(id=id)
comentario.delete() # Elimina el comentario de la base de datos
return HttpResponse(f'Comentario con id {id} eliminado con éxito (usando delete()).')
# Opción B: Usar filter().delete()
def delete_comentario_filter(request, id):
Comentario.objects.filter(id=id).delete() # Elimina el comentario con el id dado
return HttpResponse(f'Comentario con id {id} eliminado con éxito (usando filter().delete()).')
4.3 Llamar a la ruta para eliminar comentarios¶
Puedes probar estas vistas navegando a http://127.0.0.1:8000/comentarios/delete/ para eliminar un comentario (reemplaza <id> con el id del comentario que deseas eliminar).
Vista navegador

4.4 Comprobar en la base de datos¶
Nuevamente, utiliza la extensión SQLite en VSCode o la terminal para abrir la base de datos y verificar que el comentario ha sido eliminado correctamente de la tabla comentarios.
5. Resumen¶
En este tema hemos aprendido a crear y eliminar objetos utilizando el ORM de Django. Vimos cómo hacerlo de dos maneras diferentes:
- Crear objetos utilizando el método
save()ycreate(). - Eliminar objetos utilizando
delete()yfilter().delete(). Además, verificamos que los cambios se reflejan correctamente en la base de datos utilizando VSCode o la terminal.
6. Ejercicio Propuesto¶
6.1 Crear un modelo Post¶
Crea un nuevo modelo Post con los campos:
title:CharField, máximo 200 caracteres.content:TextField, no nulo.
Crea rutas para crear y eliminar objetos Post.
6.2 Crear un modelo Author¶
Crea un modelo Author con los campos:
name:CharField, máximo 100 caracteres.email:EmailField.
Crea una ruta para eliminar un objeto Author por su id.
6.3 Comprobar en la base de datos¶
Verifica que los objetos se crean y eliminan correctamente en la base de datos utilizando consultas SQL en VSCode o la terminal.
Puedes copiar y pegar este contenido en tu proyecto para probarlo. Si necesitas más detalles o ajustes, ¡avísame!