DEV Community

Gabriel Villacis
Gabriel Villacis

Posted on

Gestor de Iniciativas Ecológicas: Django (Parte 2)

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.

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
Enter fullscreen mode Exit fullscreen mode
  • Categoria: Tiene solo un campo nombre 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
Enter fullscreen mode Exit fullscreen mode

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
Enter fullscreen mode Exit fullscreen mode
  • ubicacion_lat y ubicacion_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
Enter fullscreen mode Exit fullscreen mode

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
Enter fullscreen mode Exit fullscreen mode

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
Enter fullscreen mode Exit fullscreen mode
  • 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
Enter fullscreen mode Exit fullscreen mode

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"
           }
       }
   ]
Enter fullscreen mode Exit fullscreen mode

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
Enter fullscreen mode Exit fullscreen mode

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',)
Enter fullscreen mode Exit fullscreen mode
  • 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 campo fecha_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)