Uso básico de la Shell - Consola Interactiva de Python

La shell de Django es una herramienta que tenemos disponibles para hacer pruebas en el proyecto de Django, en otras palabras, permite interactuar con la aplicación mediante comandos, es una herramienta extremadamente útil cuando queremos probar conexiones a la base de datos mediante los modelos, poder consultar la estructura de datos devuelta de una consulta o similares desde la línea de comandos sin necesidad de que implementemos vistas/controladores de prueba para hacer este tipo de comprobaciones.

Esta herramienta está disponible desde la CLI de Django mediante el siguiente comando: 

$ python manage.py shell

El cual debes de ejecutar con el servidor de Django detenido; una vez ejecutado el comando anterior, deberías de ver una salida similar a la siguiente:

Python 3.X (tags/v3.12.0:0fb18b0, Oct  2 2023, 13:03:39) [MSC v.1935 64 bit (AMD64)] on win32
Type "help", "copyright", "credits" or "license" for more information.
(InteractiveConsole)
>>> 

Desde aquí, podemos interactuar con la aplicación, por ejemplo realizar conexiones a la base de datos mediante los modelos, para ello, lo primero que debemos de hacer es cargar el recurso que quieres probar:

>>> from comments.models import Comment

Ya con esto, tenemos cargado el modelo llamado Comment y podemos realizar las operaciones sobre el modelo.

Obtener todos los registros:

>>> comments = Comment.objects.all()
<QuerySet [<Comment: Comment #1>, <Comment: Comment #2>, <Comment: Comment #3>, <Comment: Comment #4>, <Comment: Comment #5>]>

Obtener un registro por la PK:

>>> comment = Comment.objects.get(pk=1)

En el ejemplo anterior, el comentario con el ID de 1 debe de existir, si el comentario no existe, Django lanzará una excepción:

in get
    raise self.model.DoesNotExist(

comments.models.Comment.DoesNotExist: Comment matching query does not exist.

O empleando un shortcut:

>>> from django.shortcuts get_list_or_404
>>> get_object_or_404(Comment, pk=pk)

Para eliminar un registro:

>>> comment.delete()

Para guardar una instancia de un objeto en la base de datos, es decir, para crear o actualizar un registro en el caso de que tenga el ID establecido:

comment.save()

Para obtener datos de manera filtrada:

>>> Comment.objects.all().filter(text="contenido")

En donde el parámetro de la función filter() hace referencia a un atributo del modelo.

Para obtener registros en base a una condición:

Comment.objects.get(text="contenido")

Para traer registros ordenados:

Comment.objects.order_by('date_posted')

Para borrar un registro:

comment.delete()

Estos son solamente algunas operaciones que podemos realizar con el ORM de Django, pero son las que vamos a emplear en el siguiente apartado para crear nuestro CRUD de comentarios.

- Andrés Cruz

In english

Este material forma parte de mi curso y libro completo; puedes adquirirlos desde el apartado de libros y/o cursos Curso y libro desarrollo web con Django 5 y Python 3 + integración con Vue 3, Bootstrap y Alpine.js.

Andrés Cruz

Desarrollo con Laravel, Django, Flask, CodeIgniter, HTML5, CSS3, MySQL, JavaScript, Vue, Android, iOS, Flutter

Andrés Cruz En Udemy

Acepto recibir anuncios de interes sobre este Blog.