September 2, 2026
Django 6.1.1 fixes one crash in Django 5.2 and several bugs in 6.1.
Fixed a crash in Django 5.2 when combining distinct(*fields) with order_by() and values() and using two
lookup paths resolving to the same column (#37222).
Fixed a regression in Django 6.1 where the deprecation of double-dot variable
lookups incorrectly applied to string and translated template literals
containing two consecutive dots, such as {{ "a..b" }} (#37257).
Fixed a regression in Django 6.1 where ModelAdmin.list_display
entries that traverse multiple relations using __ could crash or display
incorrect values (#37270).
Fixed a bug in Django 6.1 where the fields.E323 system check did not
detect mixed on_delete variants for auto-created intermediate models for
ManyToManyFields (#37254).
Fixed a regression in Django 6.1 where custom querysets used with
Prefetch for forward foreign key or reverse
one-to-one relationships were not routed using the parent queryset’s
database (#37300).
Fixed a regression in Django 6.1 where HTML-safe strings, such as those
created with mark_safe(), used as form media
assets were treated as asset paths rather than being rendered verbatim
(#37262).
Fixed a regression in Django 6.1 that caused AlterField operations that
changed only the Python-level on_delete option of ForeignKey or
OneToOneField fields to perform unnecessary schema changes
(#37260).
Fixed a bug in Django 6.1 where DecimalField
without max_digits and decimal_places caused a crash when retrieving
values on SQLite (#37275).
Fixed a regression in Django 6.1 that caused a crash when iterating a
QuerySet of a model overriding Model.from_db() without the new
fetch_mode keyword argument. Such overrides now work again, but are
deprecated and should be updated to accept fetch_mode (#37259).
Fixed a regression in Django 6.1 where an admin changelist search crashed
when a search_fields entry used an __exact lookup on a field with
choices, and where any search term matched all rows with a True
value when an __exact lookup was used on a BooleanField
(#37263).
Fixed a regression in Django 6.1 that caused __in lookups on annotations
to erroneously return empty querysets and __range lookups to crash when
passed an iterator (#37311).
Fixed a bug in Django 6.1 where QuerySet.in_bulk() chained after
QuerySet.values() or QuerySet.values_list() could drop selected
annotations or produce incorrect mapping keys (#37312).
Sep 08, 2026