En este tema, aprenderemos sobre los modelos en Django y cómo interactúan con las bases de datos. Los modelos son una parte fundamental de cualquier aplicación Django, ya que representan la estructura de los datos y proporcionan una interfaz para interactuar con la base de datos.
Objetivos
- Comprender qué son los modelos en Django.
- Aprender a definir modelos y sus campos.
- Conocer cómo realizar migraciones para aplicar cambios en la base de datos.
- Entender cómo utilizar el ORM (Object-Relational Mapping) de Django para realizar operaciones CRUD (Crear, Leer, Actualizar, Eliminar).
¿Qué es un Modelo en Django?
Un modelo en Django es una clase que representa una tabla en la base de datos. Cada atributo de la clase corresponde a una columna de la tabla. Django proporciona un ORM que permite interactuar con la base de datos utilizando objetos Python en lugar de escribir consultas SQL directamente.
Definiendo un Modelo
Para definir un modelo, debes crear una clase que herede de django.db.models.Model
. Cada atributo de la clase representa un campo en la base de datos.
Ejemplo de un Modelo
from django.db import models class Author(models.Model): first_name = models.CharField(max_length=30) last_name = models.CharField(max_length=30) birth_date = models.DateField() def __str__(self): return f"{self.first_name} {self.last_name}"
Explicación del Código
Author
es una clase que hereda demodels.Model
.first_name
,last_name
ybirth_date
son atributos de la clase que representan columnas en la tabla de la base de datos.models.CharField
ymodels.DateField
son tipos de campo proporcionados por Django.__str__
es un método especial que define cómo se representará el objeto como una cadena.
Tipos de Campos Comunes
Tipo de Campo | Descripción |
---|---|
CharField |
Campo de texto con longitud máxima. |
TextField |
Campo de texto largo. |
IntegerField |
Campo de número entero. |
FloatField |
Campo de número decimal. |
BooleanField |
Campo de valor booleano (True/False). |
DateField |
Campo de fecha. |
DateTimeField |
Campo de fecha y hora. |
ForeignKey |
Campo de clave foránea para relaciones uno a muchos. |
ManyToManyField |
Campo de relación muchos a muchos. |
Migraciones
Las migraciones son una forma de aplicar cambios en la estructura de la base de datos. Cada vez que se crea o modifica un modelo, es necesario crear y aplicar una migración.
Creando una Migración
Para crear una migración, utiliza el siguiente comando:
Aplicando una Migración
Para aplicar las migraciones y actualizar la base de datos, utiliza el siguiente comando:
Operaciones CRUD con el ORM de Django
Crear
Para crear un nuevo registro en la base de datos, utiliza el método create
o crea una instancia del modelo y llama al método save
.
# Usando el método create author = Author.objects.create(first_name="John", last_name="Doe", birth_date="1980-01-01") # Usando el método save author = Author(first_name="Jane", last_name="Doe", birth_date="1990-02-02") author.save()
Leer
Para leer registros de la base de datos, utiliza el método all
o filter
.
# Obtener todos los autores authors = Author.objects.all() # Filtrar autores por apellido doe_authors = Author.objects.filter(last_name="Doe")
Actualizar
Para actualizar un registro, primero obtén la instancia, modifica los atributos y luego llama al método save
.
Eliminar
Para eliminar un registro, obtén la instancia y llama al método delete
.
Ejercicio Práctico
Ejercicio 1: Definir un Modelo de Libro
Define un modelo Book
con los siguientes campos:
title
(CharField, max_length=100)author
(ForeignKey aAuthor
)published_date
(DateField)isbn
(CharField, max_length=13)
Solución
from django.db import models class Book(models.Model): title = models.CharField(max_length=100) author = models.ForeignKey(Author, on_delete=models.CASCADE) published_date = models.DateField() isbn = models.CharField(max_length=13) def __str__(self): return self.title
Ejercicio 2: Crear y Leer Registros
- Crea un nuevo autor y un nuevo libro.
- Obtén todos los libros y filtra los libros por un autor específico.
Solución
# Crear un nuevo autor author = Author.objects.create(first_name="George", last_name="Orwell", birth_date="1903-06-25") # Crear un nuevo libro book = Book.objects.create(title="1984", author=author, published_date="1949-06-08", isbn="1234567890123") # Obtener todos los libros books = Book.objects.all() # Filtrar libros por autor orwell_books = Book.objects.filter(author=author)
Conclusión
En esta sección, hemos aprendido sobre los modelos en Django y cómo interactúan con las bases de datos. Hemos cubierto cómo definir modelos, realizar migraciones y utilizar el ORM de Django para realizar operaciones CRUD. Estos conceptos son fundamentales para el desarrollo de aplicaciones web con Django y te preparan para trabajar con datos de manera eficiente y efectiva. En el próximo módulo, exploraremos cómo manejar formularios en Django.
Curso de Desarrollo Web con Django
Módulo 1: Introducción a Django
- ¿Qué es Django?
- Configuración del Entorno de Desarrollo
- Creando tu Primer Proyecto Django
- Entendiendo la Estructura del Proyecto Django
Módulo 2: Conceptos Básicos de Django
- Aplicaciones Django y Estructura del Proyecto
- Enrutamiento de URL y Vistas
- Plantillas y Archivos Estáticos
- Modelos y Bases de Datos
- Interfaz de Administración de Django
Módulo 3: Django Intermedio
- Manejo de Formularios
- Vistas Basadas en Clases
- Autenticación de Usuarios
- Middleware
- Carga de Archivos
Módulo 4: Django Avanzado
- Consultas Avanzadas con Django ORM
- Modelos de Usuario Personalizados
- Señales de Django
- Pruebas en Django
- Optimización del Rendimiento