$ cat django/week/2026-10-12.log
the week in review · Oct 12 – Oct 18, 2026
Table-valued expressions clear Steering Council for ORM
By RepoJournal · composed from the cited sources · human-reviewed weekly · methodology
asgiref deprecates its custom timeout for asyncio.timeout and raises its floor to Python 3.11, alongside a batch of ORM and warning fixes.
Add support for table-valued expressions in ORM (#113) django/deps
The Steering Council approved table-valued expressions in the ORM on 2026-10-14, the period's clearest signal about where query construction is heading. Nothing ships to the ORM yet, but the design question is settled.
Fixed #23424 -- Corrected tokenization of verbatim blocks. django/django
Verbatim blocks now tokenize correctly, so directive content inside them no longer gets parsed where it should be passed through untouched. This is the kind of fix you notice only when a doc page renders wrong.
Refs #37212 -- Fixed console tabs bug on shared doctrees. django/django
A builder-specific optimization in ConsoleDirective is gone, which fixes output that varied with build order when doctrees are shared, as docs/Makefile does. Incremental doc builds should now produce the same bytes as clean ones.
Fixed #32980 -- Reduced cost of building M2M related managers. django/django
Relation-only attributes of ManyRelatedManager move to class level so __init__() does per-instance work only, without the per-instance caching that was reverted in #33984. Code that instantiates related managers in hot loops is the target.
Fixed #28219 -- Made UnorderedObjectListWarning skip Django frames. django/django
The fixed stacklevel=3 only pointed at user code when Paginator was instantiated directly; through ListView, the admin, or AsyncPaginator the warning landed inside Django. Those pagination warnings now name your own view or queryset.
Fixed #37418 -- Fixed JSONField/HStoreField crash on deeply nested JSON. django/django
forms.JSONField.to_python() and bound_data() only caught json.JSONDecodeError, so input nested past the recursion limit raised RecursionError out of Form, forcing a 500. Deeply nested payloads now surface as a validation error instead of crashing the request.
Fixed #37411 -- Added compatibility for oracledb 26.0.0+. django/django
oracledb 26.0.0 requires large parameter values to be passed as a temporary LOB when calling PL/SQL functions, which broke GIS fixtures on input like the Texas Multipolygon WKT. Oracle deployments on 26.0.0 or later need this compat fix to run those paths.
Fix #514: Handle scope["server"] = None in build_environ without crashing django/asgiref
build_environ indexed scope["server"] after checking only for its presence, so servers that set it to None, including Uvicorn with --uds, hit a TypeError. The check now handles the None case.
$ 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.
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.