Saltar a contenido

Proyecto Final - Parte 2

Introducción

En esta Parte II, vamos a centrarnos en la creación de los modelos de Contactos y Tareas. Esto incluirá definir las propiedades de cada modelo, realizar las migraciones correspondientes y aplicarlas a la base de datos. Además, prepararemos el modelo de Contactos para su posterior integración en el panel de administración de Django.

Desarrollo

1. Creación de los Modelos en models.py

Comenzaremos creando los modelos para Contactos y Tareas dentro de sus respectivas aplicaciones.

Modelo Contact

Abre el archivo contact/models.py y define el siguiente modelo:

contact/models.py
 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
from django.db import models

class Contact(models.Model):
    name = models.CharField(max_length=50, null=False, blank=False)
    last_name = models.CharField(max_length=50, null=False, blank=False)
    phone = models.CharField(max_length=12, null=True, blank=True)
    mobile = models.CharField(max_length=12, null=False, blank=False)
    email = models.EmailField(null=False, blank=False)
    company = models.CharField(max_length=20, null=True, blank=True)
    date = models.DateTimeField(auto_now_add=True)
    notes = models.TextField(null=True, blank=True)

def __str__(self):
        return self.name

Explicación del modelo Contact:

  • name: Campo CharField con un máximo de 50 caracteres. Es obligatorio y no puede estar vacío.
  • last_name: Igual que name, un campo CharField de 50 caracteres, obligatorio.
  • phone: Un campo CharField de 12 caracteres que es opcional.
  • mobile: Un campo CharField de 12 caracteres que es obligatorio.
  • email: Un campo de tipo EmailField, obligatorio.
  • company: Un campo CharField de 20 caracteres, opcional.
  • date: Un campo de fecha y hora (DateTimeField) que se establece automáticamente a la fecha de creación.
  • notes: Un campo TextField, opcional, que puede contener notas adicionales sobre el contacto.

Modelo Todo

Ahora, abre el archivo todo/models.py y define el siguiente modelo:

todo/models.py
 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
from django.db import models

class Todo(models.Model):
    title = models.CharField(max_length=100, null=False, blank=False)
    description = models.TextField(null=True, blank=True)
    date = models.DateTimeField(auto_now_add=True)
    estimated_end = models.DateTimeField(null=True, blank=True)
    priority = models.IntegerField(default=1)

def __str__(self):
    return self.title

Explicación del modelo Todo:

  • title: Un campo CharField con un máximo de 100 caracteres. Es obligatorio.
  • description: Un campo TextField, opcional, que permite ingresar una descripción de la tarea.
  • date: Un campo DateTimeField que se establece automáticamente a la fecha de creación.
  • estimated_end: Un campo de tipo DateTimeField, opcional, que indica la fecha estimada de finalización de la tarea.
  • priority: Un campo IntegerField que por defecto tiene un valor de 1. Indica la prioridad de la tarea.

2. Realización de Migraciones

Una vez definidos los modelos, debemos realizar las migraciones para que Django cree las tablas correspondientes en la base de datos.

  1. Crear las migraciones:

    En la terminal, ejecuta el siguiente comando para crear las migraciones de ambos modelos:

    python manage.py makemigrations
    

    Esto generará un archivo de migración en la carpeta migrations de cada aplicación.

  2. Aplicar las migraciones:

    Luego, aplica las migraciones con el siguiente comando:

    python manage.py migrate
    

    Este comando actualizará la base de datos creando las tablas para los modelos Contact y Todo.

3. Registro de los Modelos en el Panel de Administración

Para gestionar los contactos y las tareas desde el panel de administración de Django, necesitamos registrar ambos modelos en admin.py.

  1. Registrar el modelo Contact en contact/admin.py:

    Abre el archivo contact/admin.py y agrega el siguiente código:

    from django.contrib import admin
    from .models import Contact
    
    admin.site.register(Contact)
    
  2. Registrar el modelo Todo en todo/admin.py:

    Abre el archivo todo/admin.py y agrega el siguiente código:

    from django.contrib import admin
    from .models import Todo
    
    admin.site.register(Todo)
    

4. Verificación en el Panel de Administración

Ahora que hemos registrado ambos modelos, crearemos un superusuario para poder acceder al panel de administración y gestionar los contactos y las tareas.

  1. Crear un superusuario:

    Ejecuta el siguiente comando en la terminal para crear un superusuario:

    python manage.py createsuperuser
    

    Sigue las instrucciones y proporciona un nombre de usuario, correo electrónico y una contraseña.

    Crear superusuario

    Crear superusuario He utilizado admin como nombre de usuario, admin@agenda.es como correo y superuser como contraseña (aunque no es recomendable usar contraseñas tan simples en un entorno real).

  2. Acceder al panel de administración:

    Una vez creado el superusuario, ejecuta el servidor de desarrollo:

    python manage.py runserver
    

    Luego, abre tu navegador y ve a:

    http://127.0.0.1:8000/admin/
    
    Ingresa con el superusuario que acabas de crear y verifica que los modelos Contact y Todo estén disponibles para ser gestionados.

5. Resumen de la Parte II

En esta parte, hemos creado los modelos para Contactos y Tareas, definimos sus campos, realizamos las migraciones correspondientes y verificamos que las tablas se crearon en la base de datos. Además, registramos ambos modelos en el panel de administración de Django para permitir su gestión desde la interfaz gráfica.