4 de mayo de 2021
Django 3.2.1 corrige una cuestión de seguridad y varios errores en 3.2.
Se permitió la travesía del directorio mediante archivos subidos con nombres de archivo adecuadamente elaborados por MultiPartParser, UploadedFile y FieldFile.
Para mitigar este riesgo, se aplica ahora una sanitización más estricta del nombre de archivo y la ruta.
Se ha corregido la detección de GDAL 3.2 en Windows (#32544).
Se ha fijado un error en Django 3.2 donde las subclases de BigAutoField y SmallAutoField no estaban permitidas para el parámetro de configuración DEFAULT_AUTO_FIELD (#32620).
Se ha fijado una regresión en Django 3.2 que causaba un crash de QuerySet.values()/values_list() después de QuerySet.union(), intersection() y difference() cuando estaba ordenada por un campo no anotado (#32627).
Se ha restaurado, tras una regresión en Django 3.2, la visualización del mensaje de excepción en la página de depuración técnica 404 (#32637).
Se ha fijado un error en Django 3.2 donde una comprobación de sistema se caía en relaciones uno a uno reversas en CheckConstraint.check o UniqueConstraint.condition (#32635).
Se ha fijado una regresión en Django 3.2 que causaba un crash de ModelAdmin.search_fields cuando se buscaba contra frases con comillas dobles no equilibradas (#32649).
Se ha fijado un error en Django 3.2 donde los errores de búsqueda de variables se registraban al renderizar el plantilla del mapa de sitio si las alternativas no estaban definidas (#32648).
Se ha corregido una regresión en Django 3.2 que causaba un error cuando se combinaban objetos Q() que contienen expresiones booleanas (#32548).
Se ha corregido una regresión en Django 3.2 que causaba un error de QuerySet.update() en un conjunto de consultas ordenado por campos heredados o unidos en MySQL y MariaDB (#32645).
Se corrigió una regresión en Django 3.2 que causaba un error al descodificar el valor de una cookie, utilizado por django.contrib.messages.storage.cookie.CookieStorage, en el formato pre-Django 3.2 (#32643).
Se ha corregido una regresión en Django 3.2 que impedía la selección de varias filas en la lista de cambios del panel administrativo utilizando el modificador de tecla Shift (#32647).
Se corrigió un error en Django 3.2 donde una comprobación del sistema se caía con el parámetro de configuración STATICFILES_DIRS con una lista de tuplas de 2 elementos de (prefijo, ruta) (#32665).
Se ha corregido un fallo persistente que involucraba la combinación bit a bit de consultas cuando se utilizan con subconsultas que comenzaron a manifestarse en Django 3.2, debido a una corrección separada utilizando Exists para exclude() relaciones de múltiples valores (#32650).
Se corrigió un error en Django 3.2 donde se registraban errores de búsqueda de variables cuando se renderizaban algunos plantillas administrativas (#32681).
Se corrigió un bug en Django 3.2 donde una lista de cambios administrativa se caía al eliminar objetos filtrados contra relaciones múltiples (#32682). La lista de cambios administrativa ahora utiliza Exists() en lugar de QuerySet.distinct() porque llamar a delete() después de distinct() no está permitido en Django 3.2 para abordar la posibilidad de pérdida de datos.
Se ha corregido una regresión en Django 3.2 donde el entorno del proceso llamante no se pasaba al comando dbshell en PostgreSQL (#32687).
Se ha corregido una regresión de rendimiento en Django 3.2 al construir filtros complejos con consultas secundarias (#32632). Como efecto colateral, se ha eliminado la API privada para comprobar la igualdad de django.db.sql.query.Query.
may 31, 2026