RepoJournal

$ cat django/week/2026-09-28.log

Django

Django

the week in review · Sep 28 – Oct 4, 2026

Django 6.1.2, 6.0.9, 5.2.18 dates confirmed

By RepoJournal · composed from the cited sources · human-reviewed weekly · methodology

♥

Async iterators now close deterministically under aclosing, and distinct(*fields) stops mangling aliases with double underscores.

27 commits 16 PRs merged 7 briefings covered

all django reviews →

Fixed #37066 -- Wrapped async iteration sites in (maybe_)aclosing. django/django

by Thomas Grainger

Every site that consumes a not-locally-defined async iterable now wraps it in (maybe_)aclosing, so aclose() runs predictably when the consumer exits. If you stream from async querysets or async generators, this removes a class of leaked-iterator behavior that used to depend on garbage collection timing.

Fixed #37350 -- Made distinct(*fields) resolve aliases containing "__". django/django

by Juliana Nicacio

Query.get_names_to_join() now preserves annotation aliases and SQLCompiler.get_distinct() uses it instead of splitting on LOOKUP_SEP. Annotations whose aliases contain "__" are no longer misread as lookup paths, so distinct(*fields) with such aliases returns the rows you asked for.

Prefer client certificate chains in the TLS extension django/asgiref

by Kludex

The TLS extension keeps only client_cert_chain and drops the fields that forced servers to parse or translate TLS metadata, with the version history documented. If you read certificate details from the chain, the data you need is still there; if you depended on the removed fields, you are the one who has to migrate.

Fixed #36496 -- Ensured the parent path to a sqlite file exists. django/django

by Becky Smith

Django now creates a SQLite file's parent directories if they are missing before connecting, and re-raises OSErrors as InterfaceError. Projects that point DATABASES at a path under a directory that does not exist yet stop failing with "Unable to open database file".

Fixed #37167 -- Allowed email.headerregistry.Address objects as email addresses. django/django

by VIZZARD-X

ADMINS and MANAGERS now accept email.headerregistry.Address objects, not just strings, which is the supported way to build an address with a display name from variable parts. You can stop string-formatting names into addresses and handing those to mail settings.

Fixed #37291 -- Prevented tuple lookups from hanging on F() expressions. django/django

by Yassin Bahri

Tuple lookups against F() expressions no longer hang. The fix is deliberately scoped: the release notes say the underlying unsafety with iterating F() expressions will be handled later to allow time to consider backward compatibility, so the deeper query work is still open.

Fixed #37378 -- Removed extra empty breadcrumb in admindocs model index. django/django

by Natalia

The extra empty breadcrumb on the admindocs model index is gone. It was a regression, and admindocs was not the only thing touched this period: unused hyperlink targets pointing at nonexistent docs pages were removed as well.

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

by Github Bot

Alongside: ubuntu-latest benchmark results landed in django-asv, the djangodocs Sphinx extension shed obsolete HTML4-era table and parameterlist customizations, plan taglines on djangoproject.com now name what each tier adds, and the steering council's 2026-09-21 meeting notes are up.

$ ls django/week/ # the briefings behind this review

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.

all django reviews →