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!
Top comments (0)