Django 6.0 release notes - UNDER DEVELOPMENT¶
Expected December 2025
Welcome to Django 6.0!
These release notes cover the new features, as well as some backwards incompatible changes you’ll want to be aware of when upgrading from Django 5.2 or earlier. We’ve begun the deprecation process for some features.
See the How to upgrade Django to a newer version guide if you’re updating an existing project.
Python compatibility¶
Django 6.0 supports Python 3.12 and 3.13. We highly recommend and only officially support the latest release of each series.
Third-party library support for older version of Django¶
Following the release of Django 6.0, we suggest that third-party app authors
drop support for all versions of Django prior to 5.2. At that time, you should
be able to run your package’s tests using python -Wd
so that deprecation
warnings appear. After making the deprecation warning fixes, your app should be
compatible with Django 6.0.
What’s new in Django 6.0¶
Minor features¶
django.contrib.admin
¶
…
django.contrib.admindocs
¶
…
django.contrib.auth
¶
The default iteration count for the PBKDF2 password hasher is increased from 1,000,000 to 1,200,000.
django.contrib.contenttypes
¶
…
django.contrib.gis
¶
…
django.contrib.messages
¶
…
django.contrib.postgres
¶
…
django.contrib.redirects
¶
…
django.contrib.sessions
¶
…
django.contrib.sitemaps
¶
…
django.contrib.sites
¶
…
django.contrib.staticfiles
¶
…
Cache¶
…
CSRF¶
…
Decorators¶
…
Email¶
…
Error Reporting¶
…
File Storage¶
…
File Uploads¶
…
Forms¶
…
Generic Views¶
…
Internationalization¶
…
Logging¶
…
Management Commands¶
…
Migrations¶
…
Models¶
…
Requests and Responses¶
…
Security¶
…
Serialization¶
…
Signals¶
…
Templates¶
…
Tests¶
…
URLs¶
…
Utilities¶
…
Validators¶
…
Backwards incompatible changes in 6.0¶
Database backend API¶
This section describes changes that may be needed in third-party database backends.
…
Miscellaneous¶
…
Features deprecated in 6.0¶
Miscellaneous¶
…
Features removed in 6.0¶
These features have reached the end of their deprecation cycle and are removed in Django 6.0.
See Features deprecated in 5.0 for details on these changes, including how to remove usage of these features.
Support for passing positional arguments to
BaseConstraint
is removed.The
DjangoDivFormRenderer
andJinja2DivFormRenderer
transitional form renderers are removed.BaseDatabaseOperations.field_cast_sql()
is removed.request
is required in the signature ofModelAdmin.lookup_allowed()
subclasses.Support for calling
format_html()
without passing args or kwargs is removed.The default scheme for
forms.URLField
changed from"http"
to"https"
.The
FORMS_URLFIELD_ASSUME_HTTPS
transitional setting is removed.The
django.db.models.sql.datastructures.Join
no longer fallback toget_joining_columns()
.The
get_joining_columns()
method ofForeignObject
andForeignObjectRel
is removed.The
ForeignObject.get_reverse_joining_columns()
method is be removed.Support for
cx_Oracle
is removed.The
ChoicesMeta
alias todjango.db.models.enums.ChoicesType
is removed.The
Prefetch.get_current_queryset()
method is removed.The
get_prefetch_queryset()
method of related managers and descriptors is removed.get_prefetcher()
andprefetch_related_objects()
no longer fallback toget_prefetch_queryset()
.
See Features deprecated in 5.1 for details on these changes, including how to remove usage of these features.
django.urls.register_converter()
no longer allows overriding existing converters.The
ModelAdmin.log_deletion()
andLogEntryManager.log_action()
methods are removed.The undocumented
django.utils.itercompat.is_iterable()
function and thedjango.utils.itercompat
module is removed.The
django.contrib.gis.geoip2.GeoIP2.coords()
method is removed.The
django.contrib.gis.geoip2.GeoIP2.open()
method is removed.Support for passing positional arguments to
Model.save()
andModel.asave()
is removed.The setter for
django.contrib.gis.gdal.OGRGeometry.coord_dim
is removed.The
check
keyword argument ofCheckConstraint
is removed.The
get_cache_name()
method ofFieldCacheMixin
is removed.The
OS_OPEN_FLAGS
attribute ofFileSystemStorage
is removed.