Requisito previo: modelos de Django
Django nos permite interactuar con sus modelos de base de datos, es decir, agregar, eliminar, modificar y consultar objetos, usando una API de abstracción de base de datos llamada ORM (Object Relational Mapper). Este artículo analiza todas las operaciones útiles que podemos realizar con Django ORM.
Para fines de demostración, utilizaremos los siguientes modelos de Django.
class Album(models.Model): title = models.CharField(max_length = 30) artist = models.CharField(max_length = 30) genre = models.CharField(max_length = 30) def __str__(self): return self.title class Song(models.Model): name = models.CharField(max_length = 100) album = models.ForeignKey(Album, on_delete = models.CASCADE) def __str__(self): return self.name
Podemos acceder al ORM de Django ejecutando el siguiente comando dentro de nuestro directorio de proyectos.
python manage.py shell
Esto nos lleva a una consola interactiva de Python. Suponiendo que nuestros modelos existen en myProject/albums/models.py
podemos importar nuestros modelos usando el siguiente comando:
>>> from books.models import Song, Album
Agregar objetos
Para crear un objeto del modelo Álbum y guardarlo en la base de datos, debemos escribir el siguiente comando:
>>> a = Album(title = "Divide", artist = "Ed Sheeran", genre = "Pop") >>> a.save()
Para crear un objeto del modelo Song y guardarlo en la base de datos, debemos escribir el siguiente comando:
>>> s = Song(name = "Castle on the Hill", album = a) >>> s.save()
Recuperando objetos
Agreguemos 2 registros de álbumes más por el bien de la demostración.
>>> a = Album(title = "Abbey Road", artist = "The Beatles", genre = "Rock") >>> a.save() >>> a = Album(title = "Revolver", artist = "The Beatles", genre = "Rock") >>> a.save()
Para recuperar todos los objetos de un modelo, escribimos el siguiente comando:
>>> Album.objects.all() <QuerySet [<Album: Divide>, <Album: Abbey Road>, <Album: Revolver>]>
El resultado es un QuerySet o un conjunto de objetos que coinciden con la consulta. Observe que el nombre impreso es la salida de la __str__()
función.
También podemos filtrar consultas usando las funciones filter()
, exclude()
y get()
. La filter()
función devuelve un QuerySet que tiene objetos que coinciden con los parámetros de búsqueda dados.
>>> Album.objects.filter(artist = "The Beatles") <QuerySet [<Album: Abbey Road>, <Album: Revolver>]>
La exclude()
función devuelve un QuerySet que tiene objetos distintos de los que coinciden con los parámetros de búsqueda proporcionados.
>>> Album.objects.exclude(genre = "Rock") <QuerySet [<Album: Divide>]>
La get()
función devuelve un solo objeto que coincide con el parámetro de búsqueda dado. Da un error cuando la consulta devuelve varios objetos.
>>> Album.objects.get(pk = 3) <QuerySet [<Album: Revolver>]>
Modificar objetos existentes
Podemos modificar un objeto existente de la siguiente manera:
>>> a = Album.objects.get(pk = 3) >>> a.genre = "Pop" >>> a.save()
Eliminación de objetos
Para eliminar un solo objeto, necesitamos escribir los siguientes comandos:
>>> a = Album.objects.get(pk = 2) >>> a.delete() >>> Album.objects.all() <QuerySet [<Album: Divide>, <Album: Revolver>]>
Para eliminar varios objetos, podemos usar las funciones filter()
o de la siguiente manera:exclude()
>>> Album.objects.filter(genre = "Pop").delete() >>> Album.objects.all() <QuerySet []>
Publicación traducida automáticamente
Artículo escrito por Abhishek De y traducido por Barcelona Geeks. The original can be accessed here. Licence: CCBY-SA