1 de febrero de 2016
Django 1.9.2 soluciona una regresión de seguridad en 1.9 y varios bugs en 1.9.1. También hace un pequeño cambio incompatible con el pasado que esperamos no afecte a ningún usuario.
ModelAdmin’s con save_as=True¶Si un ModelAdmin utiliza save_as=True (no el valor por defecto), la administración proporciona una opción cuando se editan objetos para «Guardar como nuevo». Una regresión en Django 1.9 impidió que esa solicitud de formulario levantara un error de «Permiso Denegado» para los usuarios sin permiso «agregar».
.py-tpl reescritos en plantillas de proyecto/aplicación¶La adición del lenguaje de plantillas Django a la plantilla de aplicación por defecto en Django 1.9 significa que esos archivos ahora tienen sintaxis Python inválida. Esto causa dificultades para los sistemas de empaquetado que compilaban condicionalmente archivos *.py.
Para remediar esto, se utiliza el sufijo .py-tpl para los archivos de plantilla del proyecto y la aplicación incluidos en Django. El sufijo .py-tpl se reemplaza con .py por las comandos startproject y startapp. Por ejemplo, una plantilla con el nombre de archivo manage.py-tpl se creará como manage.py.
Por favor, crea un ticket si tienes una plantilla de proyecto personalizada que contiene archivos .py-tpl y encuentras este comportamiento problemático.
Se solucionó una regresión en el middleware ConditionalGetMiddleware que causaba las comprobaciones If-None-Match a devolver siempre HTTP 200 (#26024).
Se ha corregido una regresión que causaba que los elementos de «herramientas del usuario» se mostraran en la página de cierre de sesión del administrador (#26035).
Se ha corregido un error en el sistema de traducciones cuando el idioma actual no tiene traducciones (#26046).
Se ha corregido una regresión que causaba la selección del día incorrecto al abrir el calendario de administración para zonas horarias desde GMT+0100 hasta GMT+1200 (#24980).
Se solucionó una regresión en la edición de modelos relacionados del popup administrativo que causaba un valor escapado a ser mostrado en el select de la ventana padre (#25997).
Se corrigió una regresión en 1.8.8 que causaba un manejo incorrecto de índices en las migraciones en PostgreSQL cuando se agregaba db_index=True o unique=True a un campo CharField o TextField que ya tenía el otro especificado, o cuando se eliminaba uno de ellos de un campo que tenía ambos, o cuando se agregaba unique=True a un campo ya incluido en unique_together (#26034).
Se solucionó una regresión donde definir una relación en un campo de modelo abstracto utilizando un nombre de modelo como cadena sin app_label ya no resolvía esa referencia al app del modelo abstracto si se utilizaba ese modelo en otra aplicación (#25858).
Se ha corregido un error al destruir una base de datos de prueba existente en MySQL o PostgreSQL (#26096).
He aquí la traducción del texto manteniendo todas las etiquetas intactas:
He aquí la traducción del texto original manteniendo todas las etiquetas intactas:
Se ha corregido una regresión que causaba una excepción al realizar consultas a la base de datos en SQLite con más de 2000 parámetros cuando DEBUG está configurado como True en distribuciones que aumentan el límite de compilación SQLITE_MAX_VARIABLE_NUMBER por encima de 2000, como Debian (#26063).
Se ha corregido un error de caída cuando se utiliza un campo OneToOneField en reversa en ModelAdmin.readonly_fields (#26060).
Se ha corregido un error de caída cuando se llama al comando migrate en un caso de prueba con la propiedad available_apps apuntando a una aplicación con las migraciones deshabilitadas utilizando la configuración MIGRATION_MODULES (#26135).
Restauró la capacidad para que las herramientas de prueba y depuración determinen el template desde el cual un nodo proviene, incluso durante la herencia o inclusión de plantillas. Antes de Django 1.9, las herramientas de depuración podían acceder al origen del template a través del nodo mediante Node.token.source[0]. Esto era una API privada no documentada. El origen ahora está disponible directamente en cada nodo utilizando el atributo Node.origin (#25848).
Se corrigió una regresión en Django 1.8.5 que rompía la copia de un SimpleLazyObject con copy.copy() (#26122).
Siempre incluye geometry_field en la salida del serializador de GeoJSON, independientemente del parámetro fields (#26138).
Corregido el widget de mapa contrib.gis cuando se utiliza USE_THOUSAND_SEPARATOR=True (#20415).
Formularios inválidos muestran la inicial de valores de sus campos deshabilitados (#26129).
may 31, 2026