Blog
Relaciones, Administrador de Django y Querysets
- Publicado por: Rafael Fernandez
- Categoría: Curso Desarrollo Web Django

-En esta parte, entenderemos lo que son las relaciones y sus tipos.
-También, aprenderemos el uso del administrador y te explicaremos lo que son los querysets y como usarlos.
Relaciones
Django tiene 3 tipos de campo para establecer las relaciones entre los modelos (Tablas):
- El campo ForeignKey se utiliza para establecer una relación de 1 registro a varios registros.
- El campo OneToOneField se utiliza para relacionar registros uno a uno.
- El campo ManyToManyField para relacionar varios registros entre si, creando una nueva tabla que contiene los IDs de los modelos.
Para crear una relacion entre nuestros modelos debemos realizar lo siguiente:
- Importar desde la carpeta donde creamos las aplicaciones la clase a llamar.
- Dentro de la clase donde estamos modificando incluir el nombre de la clase que llamaremos.
- Creamos una nueva clase a la que se le aplicara la función de enlace.
- Incluimos dentro de la clase donde nos encontramos la nueva clase creada junto con la relación que deseamos que tenga.
Todo esto dentro del “models.py” de la aplicación.
Luego realizamos las migraciones con “manage.py makemigrations” y consecuentemente “manage.py migrate”.
Se importan y registran los modelos creados.
Administrador de Django
Ahora debemos crear un superusuario con “manage.py createsuperuser”.
Si se nos presenta algún error al momento de crear el superusuario podemos cambiar la carpeta de importación por “from .models import”.
Luego corremos el servidor con “manage.py runserver”. Entramos a la dirección localhost:8000/admin para iniciar sesión y debemos encontrarnos con algo parecido a esto:
Deberíamos poder visualizar los modelos creados y ser capaces de manipularlos con respecto a las funciones que hemos agregado.
Shell y Querysets
Se define que un QuerySet, es una lista de objetos de un prototipo ya definido. Además te deja observar el contenido de una base datos, organizarlos y filtrarlos.
Es más fácil de aprender con ejemplos. Vamos a intentarlo, ¿de acuerdo?
Seguramente se hará todo más sencillo comprenderlo viendo ejemplos, ¡vamos a intentarlo!
Abrimos el Shell de Django con “manage.py Shell”, donde podremos observar un interprete interactivo en el cual vamos a importar nuestros modelos:
Una vez hecho esto podemos crear objetos directamente desde la consola simplemente escribiendo “nombre_modelo.objects.create<campos…( se colocan asi: campo=”el_que_quieras”,)>”
Otra forma de hacer esto es asignarle al modelo un nombre de variable, escribimos “nombre_variable=nombre_modelo<campos…( se colocan asi: campo=”el_que_quieras”,)>” y guardamos con
“nombre_variable.save”.
Para asignar las relaciones se realiza de la siguiente manera: Asegurandonos primero de que los dos modelos esten importados entre si, colocamos el nombre del modelo al que queremos importar seguido de su nombre como variable, como si estuviesemos agregando un campo:
<campo=”nombre_campo”,
…campo2=”nombre_campo”,
…modelo = nombre_variable>
Y para enlazar un modelo, como el ya creado “accesorio”, simplemente creamos una nueva variable: “variable=modelo_enlace<nombre>”, y enlazamos asi:
“nombre_modelo(o la variable asignada).modelo_enlace.add<“nombre_variable”>”.
Querysets
Se utilizan para realizar consultas de las tablas que ya hemos creado, de la siguiente manera:
Nombre_modelo.objects.all<> para llamar a todos los objetos creados.
Si deseamos filtrar los resultados se puede hacer siempre con “.objects.filter” solo que dentro de los paréntesis <> colocamos el nombre del campo que queramos filtrar, por ejemplo <nombre__contains=”pedro”>.
Hay muchísimas otras formas de comparar los objetos, en la pagina de Django podemos encontrar ejemplos de ello.
Ahora podemos pasar el siguiente tema!
Muy bien explicado más sin embargo no entendí muy bien el ultimo ejemplo de los Querysets, tuve que buscar en otros apartados para entender mejor… Igual muchas Gracias sigo con el tutorial..