Gestor de Iniciativas Ecológicas: Django (Parte 2)
Gabriel Villacis
Posted on October 2, 2024
Tutorial 2: Creación de Modelos, Superusuario, Uso de Fixtures y Personalización del Panel de Administración
Objetivo: En este tutorial, aprenderás a crear modelos en Django, crear un superusuario para gestionar los datos desde el panel de administración, cargar datos iniciales mediante archivos fixtures
, y personalizar el panel de administración para facilitar la gestión de datos.
Paso 1: Creación de los Modelos de Iniciativas y Categorías
Primero, vamos a definir los modelos que necesitamos para nuestras iniciativas ecológicas y sus categorías.
-
Definir los modelos en
models.py
:- El modelo
Categoria
representará los distintos tipos de iniciativas, como "Reciclaje" o "Reforestación". - El modelo
Iniciativa
contendrá los detalles de cada iniciativa, vinculándola con una categoría.
- El modelo
Abre el archivo models.py
de la aplicación iniciativas
y añade el siguiente código:
from django.db import models
class Categoria(models.Model):
nombre = models.CharField(max_length=100)
def __str__(self):
return self.nombre
class Iniciativa(models.Model):
nombre = models.CharField(max_length=200)
descripcion = models.TextField()
categoria = models.ForeignKey(Categoria, on_delete=models.CASCADE)
direccion = models.CharField(max_length=255)
fecha_creacion = models.DateTimeField(auto_now_add=True)
def __str__(self):
return self.nombre
-
Categoria
: Tiene solo un camponombre
para especificar el tipo de iniciativa. -
Iniciativa
: Almacena el nombre, descripción, categoría, dirección y la fecha en que fue creada la iniciativa.- Realizar las migraciones:
Una vez creados los modelos, necesitamos aplicarlos en la base de datos.
- Ejecuta los siguientes comandos en la terminal:
poetry run python manage.py makemigrations
poetry run python manage.py migrate
Esto generará las tablas correspondientes en la base de datos para las iniciativas y categorías.
Paso 2: Añadir Campos de Geolocalización a Iniciativas
En algunos casos, es posible que necesitemos hacer cambios en los modelos ya existentes. Ahora simularemos que se ha decidido agregar campos de geolocalización (ubicacion_lat
y ubicacion_lng
) al modelo de Iniciativa
.
-
Modificar el modelo
Iniciativa
:
Vamos a actualizar el modelo para que incluya la latitud y longitud, que serán útiles para marcar las iniciativas en un mapa.
Abre nuevamente el archivo models.py
y añade los campos de ubicación:
class Iniciativa(models.Model):
nombre = models.CharField(max_length=200)
descripcion = models.TextField()
categoria = models.ForeignKey(Categoria, on_delete=models.CASCADE)
direccion = models.CharField(max_length=255)
ubicacion_lat = models.DecimalField(max_digits=9, decimal_places=6, null=True, blank=True)
ubicacion_lng = models.DecimalField(max_digits=9, decimal_places=6, null=True, blank=True)
fecha_creacion = models.DateTimeField(auto_now_add=True)
def __str__(self):
return self.nombre
-
ubicacion_lat
yubicacion_lng
permiten almacenar las coordenadas de la iniciativa.- Realizar una nueva migración:
Cada vez que modifiques un modelo, es necesario realizar una nueva migración.
- Ejecuta:
poetry run python manage.py makemigrations
poetry run python manage.py migrate
Este comando aplicará los nuevos cambios a la base de datos.
Paso 3: Crear un Superusuario para el Panel de Administración
Django tiene un poderoso panel de administración que nos permite gestionar los datos. Para acceder a este panel, necesitamos crear un superusuario.
-
Crear el superusuario:
- En la terminal, ejecuta:
poetry run python manage.py createsuperuser
Sigue las instrucciones, ingresando un nombre de usuario, correo electrónico y una contraseña.
-
Acceder al panel de administración:
- Inicia el servidor de desarrollo:
poetry run python manage.py runserver
- Abre tu navegador y visita
http://127.0.0.1:8000/admin/
. - Ingresa las credenciales del superusuario que acabas de crear para acceder al panel.
Paso 4: Población Inicial de Categorías usando Fixtures
Un fixture
es una forma de cargar datos iniciales en la base de datos. Vamos a usar un archivo JSON para cargar algunas categorías de iniciativas.
-
Crear un archivo
fixtures
:
Crea una carpeta fixtures
dentro de la aplicación iniciativas
:
mkdir iniciativas/fixtures
Luego, crea un archivo llamado categorias.json
dentro de esa carpeta:
[
{
"model": "iniciativas.categoria",
"pk": 1,
"fields": {
"nombre": "Reciclaje"
}
},
{
"model": "iniciativas.categoria",
"pk": 2,
"fields": {
"nombre": "Reforestación"
}
},
{
"model": "iniciativas.categoria",
"pk": 3,
"fields": {
"nombre": "Educación Ambiental"
}
},
{
"model": "iniciativas.categoria",
"pk": 4,
"fields": {
"nombre": "Energía Renovable"
}
},
{
"model": "iniciativas.categoria",
"pk": 5,
"fields": {
"nombre": "Agricultura Sostenible"
}
}
]
Cargar las categorías en la base de datos:
- En la terminal, ejecuta el siguiente comando para cargar las categorías definidas en el archivo JSON:
poetry run python manage.py loaddata categorias.json
Este comando insertará automáticamente las categorías en la tabla Categoria
de la base de datos.
Paso 5: Personalización del Panel de Administración
Ahora, registraremos los modelos Iniciativa
y Categoria
en el panel de administración de Django para gestionarlos desde allí. Además, personalizaremos la manera en que se muestran los datos.
- Registrar los modelos en el admin:
Abre el archivo admin.py
de la aplicación iniciativas
y añade el siguiente código:
from django.contrib import admin
from .models import Iniciativa, Categoria
@admin.register(Categoria)
class CategoriaAdmin(admin.ModelAdmin):
list_display = ('nombre',)
search_fields = ('nombre',)
@admin.register(Iniciativa)
class IniciativaAdmin(admin.ModelAdmin):
list_display = ('nombre', 'categoria', 'direccion', 'fecha_creacion')
search_fields = ('categoria__nombre', 'nombre')
list_filter = ('categoria',)
readonly_fields = ('fecha_creacion',)
-
Qué hemos añadido:
-
list_display
: Controla qué campos se muestran en la lista de iniciativas dentro del admin. -
search_fields
: Permite buscar iniciativas por nombre, dirección y categoría. -
list_filter
: Añade un filtro lateral para filtrar iniciativas por categoría. -
readonly_fields
: Hace que el campofecha_creacion
sea de solo lectura.
-
Conclusión
En este tutorial, hemos aprendido cómo:
- Crear y modificar modelos en Django.
- Aplicar migraciones y verificar si se han aplicado correctamente.
- Crear un superusuario y acceder al panel de administración.
- Población inicial de categorías usando archivos
fixtures
. - Personalizar el panel de administración de Django para facilitar la gestión de los datos.
Este conocimiento te permitirá gestionar eficazmente los modelos y datos en tu proyecto de iniciativas ecológicas. ¡Bien hecho!
Posted on October 2, 2024
Join Our Newsletter. No Spam, Only the good stuff.
Sign up to receive the latest update from our blog.