160 wires and counting

$ follow Django

Keep up with Django in about 3 minutes: what actually shipped — the commits, pull requests, releases, and security advisories that matter.

or

fair warning: these emails are deeply technical. diffs, version numbers, CVEs, benchmark deltas. if that's not your idea of a good read, this isn't your newsletter.

Folds into your digest — weekly by default, monthly if you prefer. Unsubscribe in one click.

$ status

wire 2026-10-03
stories 9

© 2026 RepoJournal Home Showcase How it works Privacy

$ the-wire · showcase

Chained model renames fix permission renames; Oracle UUID4 lowercased

By RepoJournal · Filed · About Django · Composed from the cited sources · methodology

Django's migration renamer gains an in-memory permission index so chained RenameModel operations stop losing permissions, and Oracle UUIDField() writes now match the lowercase values every other backend prepares.

Fixed #37361 -- Fixed permission renames for chained RenameModel operations. django/django

by Md. Saikat Islam

rename_permissions_after_model_rename() previously queried the database during each rename step before saving the planned changes, so in a chain like A -> B -> C the intermediate permissions (add_b) were not yet written and later steps failed to detect them. It now tracks codename updates in memory and applies them sequentially, which is what makes multi-step rename migrations rewrite permissio...

Fixed #37376 -- Made UUID4() persist data in lowercase on Oracle. django/django

by Jacob Walls

On Oracle, UUID4() produced a RAW(16) value and Django's VARCHAR2(32) UUIDField() made Oracle implicitly run RAWTOHEX(), storing uppercase UUIDs while all other value preparation kept them lowercase, which broke lookups. get_db_prep_value() was deliberately not normalized to uppercase because that would break existing uses; if you deploy UUIDField() on Oracle, this is the fix to land before you...

Refs #37140 -- Limited NULL handling warning for __in lookups to subqueries. django/django

by SnippyCodes

The __in NULL-handling documentation warning is now scoped strictly to QuerySet subqueries, and the inaccurate advice about lists of values is gone, following the ORM work in #21501. Literal lists containing None are already handled by the ORM's three-valued logic, so the docs no longer warn about a case that does not exist.

Fixed #37381 -- Corrected execute_wrapper() module reference in docs. django/django

by David Smith

The currentmodule directive pointed at django.db.backends.base.DatabaseWrapper, which is not a real module path; execute_wrapper() is now documented on the public django.db.connection object, consistent with the cache docs, and the method description is indented so it renders as the method body.

Results for ubuntu-latest added [skip ci] django/django-asv

by Github Bot

django-asv picked up ubuntu-latest results, extending the benchmark record to another runner image.

Quick answers

What shipped in Django on October 3, 2026?
Django's migration renamer gains an in-memory permission index so chained RenameModel operations stop losing permissions, and Oracle UUIDField() writes now match the lowercase values every other backend prepares. In total, 5 commits and 4 pull requests landed.
Who contributed to Django on October 3, 2026?
4 developers shipped this update, including saikat709, SnippyCodes, Jacob Walls, and David Smith.
What were the notable Django updates?
Fixed #37361 -- Fixed permission renames for chained RenameModel operations, Fixed #37376 -- Made UUID4() persist data in lowercase on Oracle, and Refs #37140 -- Limited NULL handling warning for __in lookups to subqueries.