DEV Community

Gabriel Villacis
Gabriel Villacis

Posted on

Gestión de Entidades en la DPE (parte 2)

Este tutorial cubre los siguientes puntos:

  • Definición de modelo Entidad.

Paso 1: Definición del Modelo

  • Dentro del paquete "models", crea el archivo Python: "entidad.py" con el siguiente código:
# entidades/models/entidad.py
from django.db import models
from entidades.models import *

class Entidad(models.Model):
    nombre = models.CharField(max_length=250)
    ruc = models.CharField(max_length=13)
    tipo_organizacion = models.ForeignKey(TipoOrganizacion, on_delete=models.CASCADE)
    tipo_entidad = models.ForeignKey(TipoEntidad, on_delete=models.CASCADE)
    funcion = models.ForeignKey(Funcion, on_delete=models.CASCADE)
    control_snap = models.BooleanField()
    ambito_accion = models.ForeignKey(AmbitoAccion, on_delete=models.CASCADE)
    zonal = models.ForeignKey(Zonal, on_delete=models.CASCADE)
    provincia = models.ForeignKey(Provincia, on_delete=models.CASCADE)
    canton = models.ForeignKey(Canton, on_delete=models.CASCADE)
    parroquia = models.ForeignKey(Parroquia, on_delete=models.CASCADE)
    direccion = models.CharField(max_length=150)
    telefono = models.CharField(max_length=9)
    correo_institucional = models.EmailField()
    tipo_gad = models.ForeignKey(TipoGad, on_delete=models.CASCADE)
    base_normativa = models.TextField(max_length=5000, blank=True, null=True)
    fecha_publicacion_base_legal = models.DateField()
    num_registro_oficial = models.CharField(max_length=25)
    nota_aclaracion = models.TextField(max_length=1000, blank=True, null=True)
    nombres_maxima_autoridad = models.CharField(max_length=100)
    nombres_responsable = models.CharField(max_length=100)
    correo_responsable = models.EmailField()
    telefono_responsable = models.CharField(max_length=9)
    extension_telef_responsable = models.CharField(max_length=5)
    file_ordenanza = models.FileField(null=True, upload_to='adjuntos/')
    file_registro_oficial = models.FileField(null=True, upload_to='adjuntos/')
    file_ruc = models.FileField(null=True, upload_to='adjuntos/')
    fecha_registro = models.DateTimeField(auto_now_add=True)
    fecha_ult_act = models.DateTimeField(auto_now=True)

    def __str__(self) -> str:
        return f'{self.nombre} ({self.id})'

    class Meta:
        db_table = 'ent_entidades'
        verbose_name = 'Entidad'
        verbose_name_plural = 'Entidades'
Enter fullscreen mode Exit fullscreen mode
  • En el módulo models/__init__.py incluye la importación del modelo creado:
from .entidad import Entidad
Enter fullscreen mode Exit fullscreen mode

Paso 2: Configuración para el Manejo de archivos

Asegurar la configuración adecuada para manejar uploads en Django es esencial, especialmente al utilizar el campo FileField en el modelo Entidad.

  • Necesitamos configurar la carpeta para almacenar los archivos subidos. Por lo general, esto se hace agregando una configuración en tu archivo settings.py.

Abre tu archivo gestor_entidades/settings.py y agrega o modifica las siguientes líneas:

# Configuración para manejar archivos multimedia
MEDIA_URL = '/media/'
MEDIA_ROOT = BASE_DIR  / 'media'
Enter fullscreen mode Exit fullscreen mode

Adicionalmente, en las URLS del proyecto gestor_entidades/urls.py agrega:

from django.conf import settings
from django.conf.urls.static import static

if settings.DEBUG:
    urlpatterns += static(settings.MEDIA_URL, document_root=settings.MEDIA_ROOT)

Enter fullscreen mode Exit fullscreen mode

Estas líneas de código permiten que, cuando estemos en modo de depuración (DEBUG=True en settings.py), Django pueda manejar automáticamente las solicitudes para archivos de medios y los sirva correctamente (publicarlos vía http) tomándolos desde el directorio establecido en MEDIA_ROOT.

  • Crea la carpeta media/ en la raíz de tu proyecto si aún no existe. Esto es donde se almacenarán los archivos subidos. Puedes crear esta carpeta manualmente o hacerlo ejecutando el siguiente comando en tu terminal:

mkdir media

Ahora, los archivos subidos se almacenarán en la carpeta media/adjuntos/ dentro de tu proyecto.

Paso 3: Configuración del Administrador

En el archivo entidades/admin.py, registra el modelo Entidad para que puedan ser gestionado a través del administrador de Django:

@admin.register(Entidad)
class EntidadAdmin(admin.ModelAdmin):
    list_display = ('id', 'nombre', 'tipo_organizacion', 'fecha_registro', 'fecha_ult_act')

Enter fullscreen mode Exit fullscreen mode

Y finalmente, para ejecutar el servidor de desarrollo de Django, usa el siguiente comando:

poetry run python manage.py runserver

Top comments (0)