Django 6.1.1 release notes¶
September 2, 2026
Django 6.1.1 fixes one crash in Django 5.2 and several bugs in 6.1.
Bugfixes¶
Fixed a crash in Django 5.2 when combining
distinct(*fields)withorder_by()andvalues()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_displayentries that traverse multiple relations using__could crash or display incorrect values (#37270).Fixed a bug in Django 6.1 where the
fields.E323system check did not detect mixedon_deletevariants for auto-created intermediate models forManyToManyFields (#37254).Fixed a regression in Django 6.1 where custom querysets used with
Prefetchfor 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
AlterFieldoperations that changed only the Python-levelon_deleteoption ofForeignKeyorOneToOneFieldfields to perform unnecessary schema changes (#37260).Fixed a bug in Django 6.1 where
DecimalFieldwithoutmax_digitsanddecimal_placescaused a crash when retrieving values on SQLite (#37275).Fixed a regression in Django 6.1 that caused a crash when iterating a
QuerySetof a model overridingModel.from_db()without the newfetch_modekeyword argument. Such overrides now work again, but are deprecated and should be updated to acceptfetch_mode(#37259).Fixed a regression in Django 6.1 where an admin changelist search crashed when a
search_fieldsentry used an__exactlookup on a field withchoices, and where any search term matched all rows with aTruevalue when an__exactlookup was used on aBooleanField(#37263).Fixed a regression in Django 6.1 that caused
__inlookups on annotations to erroneously return empty querysets and__rangelookups to crash when passed an iterator (#37311).Fixed a bug in Django 6.1 where
QuerySet.in_bulk()chained afterQuerySet.values()orQuerySet.values_list()could drop selected annotations or produce incorrect mapping keys (#37312).