Django 6.1 beta: control sobre consultas N+1 y borrados delegados a la base de datos

El equipo de Django ha publicado la primera beta de Django 6.1, que marca el inicio de las pruebas públicas antes del lanzamiento definitivo previsto para agosto de 2026. Las dos novedades principales apuntan a algo que todo desarrollador que haya trabajado con el ORM de Django ha visto alguna vez: las consultas que se multiplican sin querer.

FETCH_PEERS: atacar el N+1 sin prefetch_related manual

Django 6.1 introduce modos de recuperación de campos configurables. El comportamiento actual pasa a llamarse FETCH_ONE y sigue siendo el valor por defecto: si accedes a un campo que no estaba en el QuerySet original, Django lo recupera solo para esa instancia.

El nuevo modo FETCH_PEERS cambia eso. Cuando accedes al campo sin haberlo incluido, Django lo recupera para todas las instancias que vinieron del mismo QuerySet, funcionando como un prefetch_related() bajo demanda. El resultado es que los casos más habituales de N+1 pasan de N consultas a dos sin tocar nada más. Existe también un tercer modo, RAISE, que lanza una excepción FieldFetchBlocked al detectar un acceso no previsto, útil para encontrar accesos no intencionados en código de alto rendimiento.

Si quieres tener el contexto más amplio de las herramientas del ecosistema Python, el artículo sobre FastAPI en 2026 cubre cómo está el panorama de frameworks Python para APIs.

Borrados delegados al motor de base de datos

La otra novedad son nuevas opciones de borrado que usan directamente la cláusula SQL ON DELETE en lugar de gestionar la lógica desde Python. Cuando trabajas con grandes volúmenes de datos, delegar esto al motor de base de datos es bastante más eficiente que iterar desde la aplicación.

Soporte de versiones

Django 6.1 es compatible con Python 3.12, 3.13 y 3.14. En bases de datos requiere PostgreSQL 15 o superior, MySQL 8.4 o superior y MariaDB 10.11 o superior.

La beta está disponible en pip. Los desarrolladores que quieran probarla en proyectos existentes pueden instalarla con pip install Django==6.1b1 e informar de errores antes del lanzamiento definitivo.

Imagen: Pexels / Markus Spiske

COMPARTE ESTA NOTICIA

COMPARTIR EN FACEBOOK
COMPARTIR EN TWITTER
COMPARTIR EN LINKEDIN
COMPARTIR EN WHATSAPP