============================================ Django 6.0 release notes - UNDER DEVELOPMENT ============================================ *Expected December 2025* Welcome to Django 6.0! These release notes cover the :ref:`new features `, as well as some :ref:`backwards incompatible changes ` you'll want to be aware of when upgrading from Django 5.2 or earlier. We've :ref:`begun the deprecation process for some features `. See the :doc:`/howto/upgrade-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. The Django 5.2.x series is the last to support Python 3.10 and 3.11. 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. .. _whats-new-6.0: What's new in Django 6.0 ======================== Minor features -------------- :mod:`django.contrib.admin` ~~~~~~~~~~~~~~~~~~~~~~~~~~~ * ... :mod:`django.contrib.admindocs` ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ * ... :mod:`django.contrib.auth` ~~~~~~~~~~~~~~~~~~~~~~~~~~ * The default iteration count for the PBKDF2 password hasher is increased from 1,000,000 to 1,200,000. :mod:`django.contrib.contenttypes` ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ * ... :mod:`django.contrib.gis` ~~~~~~~~~~~~~~~~~~~~~~~~~ * ... :mod:`django.contrib.messages` ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ * ... :mod:`django.contrib.postgres` ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ * ... :mod:`django.contrib.redirects` ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ * ... :mod:`django.contrib.sessions` ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ * ... :mod:`django.contrib.sitemaps` ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ * ... :mod:`django.contrib.sites` ~~~~~~~~~~~~~~~~~~~~~~~~~~~ * ... :mod:`django.contrib.staticfiles` ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ * ... :mod:`django.contrib.syndication` ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ * ... 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-6.0: Backwards incompatible changes in 6.0 ===================================== Database backend API -------------------- This section describes changes that may be needed in third-party database backends. * ... Miscellaneous ------------- * ... .. _deprecated-features-6.0: 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 :ref:`deprecated-features-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`` and ``Jinja2DivFormRenderer`` transitional form renderers are removed. * ``BaseDatabaseOperations.field_cast_sql()`` is removed. * ``request`` is required in the signature of ``ModelAdmin.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 to ``get_joining_columns()``. * The ``get_joining_columns()`` method of ``ForeignObject`` and ``ForeignObjectRel`` is removed. * The ``ForeignObject.get_reverse_joining_columns()`` method is be removed. * Support for ``cx_Oracle`` is removed. * The ``ChoicesMeta`` alias to ``django.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()`` and ``prefetch_related_objects()`` no longer fallback to ``get_prefetch_queryset()``. See :ref:`deprecated-features-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()`` and ``LogEntryManager.log_action()`` methods are removed. * The undocumented ``django.utils.itercompat.is_iterable()`` function and the ``django.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()`` and ``Model.asave()`` is removed. * The setter for ``django.contrib.gis.gdal.OGRGeometry.coord_dim`` is removed. * The ``check`` keyword argument of ``CheckConstraint`` is removed. * The ``get_cache_name()`` method of ``FieldCacheMixin`` is removed. * The ``OS_OPEN_FLAGS`` attribute of :class:`~django.core.files.storage.FileSystemStorage` is removed.