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

Tutorial: 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 adm…


This content originally appeared on DEV Community and was authored by Gabriel Villacis

Tutorial: 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
  • 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

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 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

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 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!


This content originally appeared on DEV Community and was authored by Gabriel Villacis


Print Share Comment Cite Upload Translate Updates
APA

Gabriel Villacis | Sciencx (2024-10-02T00:25:18+00:00) Gestor de Iniciativas Ecológicas: Django (Parte 2). Retrieved from https://www.scien.cx/2024/10/02/gestor-de-iniciativas-ecologicas-django-parte-2/

MLA
" » Gestor de Iniciativas Ecológicas: Django (Parte 2)." Gabriel Villacis | Sciencx - Wednesday October 2, 2024, https://www.scien.cx/2024/10/02/gestor-de-iniciativas-ecologicas-django-parte-2/
HARVARD
Gabriel Villacis | Sciencx Wednesday October 2, 2024 » Gestor de Iniciativas Ecológicas: Django (Parte 2)., viewed ,<https://www.scien.cx/2024/10/02/gestor-de-iniciativas-ecologicas-django-parte-2/>
VANCOUVER
Gabriel Villacis | Sciencx - » Gestor de Iniciativas Ecológicas: Django (Parte 2). [Internet]. [Accessed ]. Available from: https://www.scien.cx/2024/10/02/gestor-de-iniciativas-ecologicas-django-parte-2/
CHICAGO
" » Gestor de Iniciativas Ecológicas: Django (Parte 2)." Gabriel Villacis | Sciencx - Accessed . https://www.scien.cx/2024/10/02/gestor-de-iniciativas-ecologicas-django-parte-2/
IEEE
" » Gestor de Iniciativas Ecológicas: Django (Parte 2)." Gabriel Villacis | Sciencx [Online]. Available: https://www.scien.cx/2024/10/02/gestor-de-iniciativas-ecologicas-django-parte-2/. [Accessed: ]
rf:citation
» Gestor de Iniciativas Ecológicas: Django (Parte 2) | Gabriel Villacis | Sciencx | https://www.scien.cx/2024/10/02/gestor-de-iniciativas-ecologicas-django-parte-2/ |

Please log in to upload a file.




There are no updates yet.
Click the Upload button above to add an update.

You must be logged in to translate posts. Please log in or register.