6.1.1
Fixed 12
- 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
- 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
- Fixed a regression in Django 6.1 where ModelAdmin.list_display entries that traverse multiple relations using __ could crash or display incorrect values
- 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
- 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
- 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
- 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
- Fixed a bug in Django 6.1 where DecimalField without max_digits and decimal_places caused a crash when retrieving values on SQLite
- 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
- 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
- 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
- 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
Deprecated 1
- Model.from_db() overrides without the new fetch_mode keyword argument are now deprecated and should be updated to accept fetch_mode
From Django
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) 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).