Contenido del curso

Desarrollo de Aplicaciones en Django

Cómo instalar Pillow para ImageField en Django

Resumen

Cuando agregas un campo de imagen a un modelo en Django, lo primero que descubres es que el framework no maneja imágenes por sí solo: necesita una librería externa llamada Pillow. Aprender a instalar Pillow en Django y registrarlo correctamente en tu proyecto es el paso que separa un modelo que rompe migraciones de uno que las ejecuta sin fricción.

¿Por qué falla la migración al usar ImageField en Django?

Al correr manage.py makemigrations con un modelo que incluye un ImageField, Django lanza un error claro: no puede generar la migración porque Pillow no está instalado. Y aquí viene lo interesante: el propio mensaje de error te indica la solución, sugiriendo el comando pip install pillow. No le tengas miedo a estos errores, son guías de instalación disfrazadas.

¿Qué es Pillow en Django? Es la librería de Python que Django usa para procesar imágenes. Sin ella, los campos ImageField no pueden validar ni guardar archivos de imagen, y las migraciones fallan.

¿Cómo instalo Pillow paso a paso?

Una vez que el error aparece, el flujo de instalación es directo y resuelve el bloqueo en segundos.

  • Ejecuta pip install pillow en tu entorno virtual.
  • Vuelve a correr python manage.py makemigrations para generar la primera migración de tu app.
  • Aplica los cambios con python manage.py migrate para que la base de datos refleje el nuevo campo.

Con esos tres pasos, tu modelo de productos ya queda listo para almacenar imágenes asociadas a cada registro.

¿Cómo agrego Pillow al archivo requirements.txt?

Instalar una dependencia en local no basta. Si despliegas a producción sin registrarla, el servidor no la tendrá y tu aplicación romperá. Por eso, cada vez que instales algo nuevo, debes reflejarlo en requirements.txt.

Para obtener la versión exacta que estás usando, corre pip freeze y busca la línea correspondiente a Pillow. Copia esa línea con su número de versión y pégala dentro de requirements.txt. Así garantizas que cualquier persona que clone el repositorio, o cualquier servidor que despliegue tu código, instale exactamente la misma versión.

¿Por qué usar pip freeze en vez de escribir solo el nombre? Porque fija la versión específica. Si solo escribes pillow, otro entorno podría instalar una versión distinta y generar comportamientos inesperados.

¿Qué hace Pillow más allá de permitir ImageField?

Pillow no solo desbloquea el campo de imagen, también te permite agregar validaciones al contenido que tus usuarios suben. Puedes verificar que una imagen cumpla con ciertas dimensiones, una resolución mínima o un formato específico antes de aceptarla en tu base de datos.

Esto es útil cuando manejas catálogos de productos, fotos de perfil o galerías donde la consistencia visual importa. La librería abre la puerta a un control fino sobre los archivos que entran a tu sistema.

¿Qué sigue después de configurar el modelo con imágenes?

Con el modelo migrado y Pillow registrado, ya tienes la materia prima para avanzar al siguiente bloque del proyecto. El flujo natural es construir las vistas que muestren los productos, conectarlas a las URLs de tu aplicación y armar un listado funcional que renderice cada producto con su imagen asociada.

El reto es directo: implementa ese listado de productos, súbelo a tu repositorio y comparte el enlace en los comentarios para recibir retroalimentación.