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'
- En el módulo
models/__init__.py
incluye la importación del modelo creado:
from .entidad import Entidad
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'
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)
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')
Y finalmente, para ejecutar el servidor de desarrollo de Django, usa el siguiente comando:
poetry run python manage.py runserver
Top comments (0)