$ cat django/week/2026-10-05.log
the week in review · Oct 5 – Oct 11, 2026
Django ships four CVEs, JSONField fixes land
By RepoJournal · composed from the cited sources · human-reviewed weekly · methodology
Security releases cover formset action forging, spatial lookup bytes, and WKB geometry limits; JSONField value handling gets patched across backends.
Fixed CVE-2026-87975 -- Prevented forging actions in model formsets with editable PKs. django/django
Forged POST data for an editable primary key let an attacker delete objects outside a ModelFormSet's queryset, and create objects on edit-only formsets. Anyone running model formsets with editable PKs exposed to untrusted input needs the patched release, not a workaround.
Refs CVE-2026-15830 -- Fixed WKB geometry collection limit bypasses. django/django
Invalid byte-order markers and recursively nested multi-geometries such as a MULTIPOINT inside a MULTIPOINT slipped past the WKB geometry collection limiter, which GEOS tolerates. The fix closes parsing paths that let an oversized or malformed payload through.
Fixed CVE-2026-87890 -- Blocked bytes in spatial lookups. django/django
Raster values supplied as bytes still triggered network fetches when resolving references, despite going through the in-memory virtual filesystem. The release notes credit sicksec for the report, with fixes from Jacob Walls, Jake Howard, and David Smith.
Fixed #37377 -- Fixed JSONField __in crash/wrong result for Value() primitives. django/django
A prior change wrapped every Value() right-hand side of JSONIn in JSON_EXTRACT()/JSON_VALUE(), which only holds for Value(..., JSONField()); bare Value("primitive") produced crashes or wrong results. If you filter JSONField __in with plain Python values, upgrade before trusting the query.
Fixed #37403 -- Fixed JSONField __in crash on SQLite with Value(None) expressions. django/django
A follow-up to the same regression: Value(None) expressions crashed JSONField __in on SQLite. SQLite users hitting that combination get the fix here.
Fixed #37322 -- Avoided transforms on spatial fields with srid=None. django/django
After spatial queries stopped interpolating the SRID into the SQL template, srid=None became valid input to ST_Transform() on PostGIS and SpatiaLite and quietly returned NULL. The code now avoids transforms on those fields instead of returning empty results.
Fixed #37297 -- Prevented crash on JSONField key lookups when an integer key is outside PostgreSQL's int4 range. django/django
Integer JSON keys past PostgreSQL's int4 range crashed key lookups. Django 11 handles the out-of-range literal rather than raising, and an accompanying fix covers Oracle's JSON_EXISTS() rejecting long array-subscript literals with ORA-40598/JZN-00211.
Added a 24 hour grace period for automated PR quality checks. django/django
Automated PR quality checks now post a comment explaining failures and wait 24 hours before closing, after DjangoCon sprint feedback that the auto-close was too aggressive for contributors who simply forgot a checkbox.
$ 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.