Django Shell para Gafanhotos



O Shell

O Shell es el interprete interactivo de Python, que nos permitirá probar los modelos, hacer consultas, analizar resultados, antes de elaborar las vistas. Es muy útil si queremos ahorrar tiempo al momento de responder a los requerimientos que los usuarios de la aplicación puedan necesitar.
Para poder acceder a la shell, abrimos una terminal o ventana de comandos, y nos ubicamos en la carpeta de proyecto (en donde se encuentre el archivo manage.py) y digitamos:
python manage.py shell
Debemos visualizar el siguiente resultado:
Shell
Shell
Lo importante es reconocer los elementos: el prompt se representa por >>> y el resultado de nuestras instrucciones se visualizarán en nuevas líneas (sin ningún símbolo previo a ellas)

Las consultas

Las consultas en base a los modelos de Django son la base de todo el desarrollo en este framework estas consultas nos pueden permitir saber, por ejemplo, la lista de usuarios, los correos electronicos de los que hacen comentarios, el primero comentario de un artículo, los artículos del mes de mayo, y la lista de posiblidades es larga.
Las consultas están descritas muy claramente en la documentación oficial, para poder hacer esto más simple aquí también usaremos esta pequeña chuleta o cheat sheet como también es conocido.
Django Queryset CheatSheet
Django Queryset CheatSheet
La referencia de todos estos métodos se encuentran también en la documentación oficial.

Ejemplos

Ahora pasamos a lo divertido, seguimos trabajando con nuestro proyecto de ejemplo, para poder realizar algunos ejemplos tenemos que modificar y corregir el models.py y dejarlo así: (ya no existe el modelo Bebida, ya no es necesario, también se debe eliminar cualquier rastro del modelo Bebida de admin.py)
models.py
models.py
Una vez que tenemos listo el models.py , reiniciamos el modelo (si no recuerdas como reiniciar revisa el capítulo: El modelo de datos)
python manage.py reset principal
Una vez con los modelos listos, es hora de probar el interprete interactivo (shell). No olvidar que la siguiente instrucción se debe lanzar desde el directorio donde se encuentra el archivo manage.py
python manage.py shell
Una vez dentro del shell, empezamos a importar los modelos, para ello digitamos
from principal.models import Receta, Comentario
Esta instrucción importa todo el modelo al shell. Aquí es donde podemos consultar el contenido de los modelos y otras consultas, la sintaxis es del tipo:
Nombre_de_modelo.objects.metodo()
Donde podemos reemplazar Nombre_de_modelo y método por las diversas opciones que están en el cheatsheet (chuleta)
all()
all()
En la imagen vemos como resultado una lista vacia [], entonces vamos a agregar elementos, para ello también necesitamos al modelo usuario que ya lo tiene Django, una vez que lo importamos sacamos al usuario cuya llave primaria (pk) sea 1.
User.objects.get(pk=1)
User.objects.get(pk=1)
Ahora si introducimos datos a los modelos: (la r es solo una variable cualquiera)
create()
create()
Y comprobamos que se ha registrado:
Receta.objects.all()
Receta.objects.all()
Agregamos un comentario a la receta anterior: (la c es solo una variable cualquiera)
create() en Comentario
create() en Comentario
Agregamos una receta mas: (Se puede escribir todo en una sola línea, yo lo hago para que se vea bien en la imagen)
create() podría ir en una sola línea
create() podría ir en una sola línea
Sigamos jugando, ahora mostraremos las recetas cuyos ingredientes no empiecen con la letra A: (notar que luego de ingredientes hay dos guiones bajos)
exclude y startswith
exclude y startswith
Ahora las recetas, que mencionen en su preparación la palabra ‘tetera’:
filter y contains
filter y contains
Y si queremos ordenar alfabéticamente por titulo de receta:
order_by()
order_by()
Ahora lo invertimos:
order_by y reverse
order_by y reverse
Mostramos los comentarios de cada receta:
filter()
filter()
Ahora me gustaría actualizar el titulo ‘Huevo Frito’ a la de ‘Huevito Frito’:
update()
update()
Sigo agregando comentarios a la primera receta y deseo saber cuantos comentarios hay hasta el momento en ambas recetas:
count()
count()
Agrego un comentario a la segunda receta (un comentario troll) y luego lo elimino:
delete()
delete()
Ahora deseo saber el nombre de usuario y correo electrónico del usuario que agregó la receta con el título exacto de ‘Agua hervida’:
Todo está orientado a objetos
Todo está orientado a objetos
Como verán hacer consultas en Django es simple, sin embargo siempre es bueno tener la documentación a la mano, ya que recordar tantos métodos puede ser tedioso al principio.

Comentários

Postagens mais visitadas deste blog

Rails CanCan

Meus insights mais valiosos sobre criptomoedas para 2018 e além

Como pegar a senha do Whatsapp de um Android ou Iphone