2024-12-12 16:05:59 +01:00
|
|
|
============================================
|
|
|
|
Django 6.0 release notes - UNDER DEVELOPMENT
|
|
|
|
============================================
|
|
|
|
|
|
|
|
*Expected December 2025*
|
|
|
|
|
|
|
|
Welcome to Django 6.0!
|
|
|
|
|
|
|
|
These release notes cover the :ref:`new features <whats-new-6.0>`, as well as
|
|
|
|
some :ref:`backwards incompatible changes <backwards-incompatible-6.0>` 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
|
|
|
|
<deprecated-features-6.0>`.
|
|
|
|
|
|
|
|
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.
|
|
|
|
|
2025-01-17 22:09:56 +01:00
|
|
|
The Django 5.2.x series is the last to support Python 3.10 and 3.11.
|
|
|
|
|
2024-12-12 16:05:59 +01:00
|
|
|
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`
|
|
|
|
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
|
|
|
|
|
2025-01-21 12:34:35 +03:00
|
|
|
* The new :attr:`.AdminSite.password_change_form` attribute allows customizing
|
|
|
|
the form used in the admin site password change view.
|
2024-12-12 16:05:59 +01:00
|
|
|
|
|
|
|
:mod:`django.contrib.auth`
|
|
|
|
~~~~~~~~~~~~~~~~~~~~~~~~~~
|
|
|
|
|
2024-12-13 10:30:54 +01:00
|
|
|
* The default iteration count for the PBKDF2 password hasher is increased from
|
|
|
|
1,000,000 to 1,200,000.
|
2024-12-12 16:05:59 +01:00
|
|
|
|
|
|
|
:mod:`django.contrib.contenttypes`
|
|
|
|
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
|
|
|
|
|
|
|
|
* ...
|
|
|
|
|
|
|
|
:mod:`django.contrib.gis`
|
|
|
|
~~~~~~~~~~~~~~~~~~~~~~~~~
|
|
|
|
|
2025-01-10 10:11:03 -05:00
|
|
|
* The new :attr:`.GEOSGeometry.hasm` property checks whether the geometry has
|
|
|
|
the M dimension.
|
2024-12-12 16:05:59 +01:00
|
|
|
|
2024-09-08 20:32:13 +02:00
|
|
|
* The new :class:`~django.contrib.gis.db.models.functions.Rotate` database
|
|
|
|
function rotates a geometry by a specified angle around the origin or a
|
|
|
|
specified point.
|
|
|
|
|
2024-12-12 16:05:59 +01:00
|
|
|
: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
|
|
|
|
~~~~~~~~~~
|
|
|
|
|
2025-01-20 09:12:09 +01:00
|
|
|
* Squashed migrations can now themselves be squashed before being transitioned
|
|
|
|
to normal migrations.
|
2024-12-12 16:05:59 +01:00
|
|
|
|
|
|
|
Models
|
|
|
|
~~~~~~
|
|
|
|
|
2025-02-19 20:27:30 +01:00
|
|
|
* :doc:`Constraints </ref/models/constraints>` now implement a ``check()``
|
|
|
|
method that is already registered with the check framework.
|
2024-12-12 16:05:59 +01:00
|
|
|
|
2024-12-22 16:30:55 +01:00
|
|
|
* The new ``order_by`` argument for :class:`~django.db.models.Aggregate` allows
|
|
|
|
specifying the ordering of the elements in the result.
|
|
|
|
|
|
|
|
* The new :attr:`.Aggregate.allow_order_by` class attribute determines whether
|
|
|
|
the aggregate function allows passing an ``order_by`` keyword argument.
|
|
|
|
|
|
|
|
* The new :class:`~django.db.models.StringAgg` aggregate returns the input
|
|
|
|
values concatenated into a string, separated by the ``delimiter`` string.
|
|
|
|
This aggregate was previously supported only for PostgreSQL.
|
|
|
|
|
2024-12-12 16:05:59 +01:00
|
|
|
Requests and Responses
|
|
|
|
~~~~~~~~~~~~~~~~~~~~~~
|
|
|
|
|
|
|
|
* ...
|
|
|
|
|
|
|
|
Security
|
|
|
|
~~~~~~~~
|
|
|
|
|
|
|
|
* ...
|
|
|
|
|
|
|
|
Serialization
|
|
|
|
~~~~~~~~~~~~~
|
|
|
|
|
|
|
|
* ...
|
|
|
|
|
|
|
|
Signals
|
|
|
|
~~~~~~~
|
|
|
|
|
|
|
|
* ...
|
|
|
|
|
|
|
|
Templates
|
|
|
|
~~~~~~~~~
|
|
|
|
|
2025-02-13 16:23:29 +01:00
|
|
|
* The new variable ``forloop.length`` is now available within a :ttag:`for`
|
|
|
|
loop.
|
2024-12-12 16:05:59 +01:00
|
|
|
|
|
|
|
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.
|
|
|
|
|
2024-12-17 23:38:23 -05:00
|
|
|
* ``BaseDatabaseCreation.create_test_db(serialize)`` is deprecated. Use
|
|
|
|
``serialize_db_to_string()`` instead.
|
2024-12-12 16:05:59 +01:00
|
|
|
|
2024-05-29 11:22:32 +02:00
|
|
|
* :class:`~django.db.backends.base.schema.BaseDatabaseSchemaEditor` and
|
|
|
|
PostgreSQL backends no longer use ``CASCADE`` when dropping a column.
|
|
|
|
|
2025-02-09 12:57:40 +01:00
|
|
|
Dropped support for MariaDB 10.5
|
|
|
|
--------------------------------
|
|
|
|
|
|
|
|
Upstream support for MariaDB 10.5 ends in June 2025. Django 6.0 supports
|
|
|
|
MariaDB 10.6 and higher.
|
|
|
|
|
2025-01-28 08:02:13 +01:00
|
|
|
Dropped support for Python < 3.12
|
|
|
|
---------------------------------
|
|
|
|
|
|
|
|
Because Python 3.12 is now the minimum supported version for Django, any
|
|
|
|
optional dependencies must also meet that requirement. The following versions
|
|
|
|
of each library are the first to add or confirm compatibility with Python 3.12:
|
|
|
|
|
|
|
|
* ``aiosmtpd`` 1.4.5
|
|
|
|
* ``argon2-cffi`` 23.1.0
|
|
|
|
* ``bcrypt`` 4.1.1
|
|
|
|
* ``geoip2`` 4.8.0
|
|
|
|
* ``Pillow`` 10.1.0
|
|
|
|
* ``mysqlclient`` 2.2.1
|
|
|
|
* ``numpy`` 1.26.0
|
|
|
|
* ``PyYAML`` 6.0.2
|
|
|
|
* ``psycopg`` 3.1.12
|
|
|
|
* ``psycopg2`` 2.9.9
|
|
|
|
* ``redis-py`` 5.1.0
|
|
|
|
* ``selenium`` 4.23.0
|
|
|
|
* ``sqlparse`` 0.5.0
|
|
|
|
* ``tblib`` 3.0.0
|
|
|
|
|
2024-12-12 16:05:59 +01:00
|
|
|
Miscellaneous
|
|
|
|
-------------
|
|
|
|
|
|
|
|
* ...
|
|
|
|
|
|
|
|
.. _deprecated-features-6.0:
|
|
|
|
|
|
|
|
Features deprecated in 6.0
|
|
|
|
==========================
|
|
|
|
|
|
|
|
Miscellaneous
|
|
|
|
-------------
|
|
|
|
|
2024-12-17 23:38:23 -05:00
|
|
|
* ``BaseDatabaseCreation.create_test_db(serialize)`` is deprecated. Use
|
|
|
|
``serialize_db_to_string()`` instead.
|
2024-12-12 16:05:59 +01:00
|
|
|
|
2024-12-22 16:30:55 +01:00
|
|
|
* The PostgreSQL ``StringAgg`` class is deprecated in favor of the generally
|
|
|
|
available :class:`~django.db.models.StringAgg` class.
|
|
|
|
|
2024-08-14 13:54:09 -06:00
|
|
|
* The PostgreSQL ``OrderableAggMixin`` is deprecated in favor of the
|
|
|
|
``order_by`` attribute now available on the ``Aggregate`` class.
|
|
|
|
|
2024-12-12 16:05:59 +01:00
|
|
|
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.
|
|
|
|
|
2024-12-12 16:32:08 +01:00
|
|
|
* Support for passing positional arguments to ``BaseConstraint`` is removed.
|
2024-12-12 16:05:59 +01:00
|
|
|
|
2024-12-12 16:37:17 +01:00
|
|
|
* The ``DjangoDivFormRenderer`` and ``Jinja2DivFormRenderer`` transitional form
|
|
|
|
renderers are removed.
|
|
|
|
|
2024-12-12 16:42:20 +01:00
|
|
|
* ``BaseDatabaseOperations.field_cast_sql()`` is removed.
|
|
|
|
|
2024-12-12 16:47:48 +01:00
|
|
|
* ``request`` is required in the signature of ``ModelAdmin.lookup_allowed()``
|
|
|
|
subclasses.
|
|
|
|
|
2024-12-12 17:01:49 +01:00
|
|
|
* Support for calling ``format_html()`` without passing args or kwargs is
|
|
|
|
removed.
|
|
|
|
|
2024-12-12 17:39:58 +01:00
|
|
|
* The default scheme for ``forms.URLField`` changed from ``"http"`` to
|
|
|
|
``"https"``.
|
|
|
|
|
|
|
|
* The ``FORMS_URLFIELD_ASSUME_HTTPS`` transitional setting is removed.
|
|
|
|
|
2024-12-12 17:49:25 +01:00
|
|
|
* 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.
|
|
|
|
|
2024-12-12 17:56:14 +01:00
|
|
|
* Support for ``cx_Oracle`` is removed.
|
|
|
|
|
2024-12-12 18:00:20 +01:00
|
|
|
* The ``ChoicesMeta`` alias to ``django.db.models.enums.ChoicesType`` is
|
|
|
|
removed.
|
|
|
|
|
2024-12-12 18:12:23 +01:00
|
|
|
* 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()``.
|
|
|
|
|
2024-12-12 16:05:59 +01:00
|
|
|
See :ref:`deprecated-features-5.1` for details on these changes, including how
|
|
|
|
to remove usage of these features.
|
|
|
|
|
2024-12-12 17:11:22 +01:00
|
|
|
* ``django.urls.register_converter()`` no longer allows overriding existing
|
|
|
|
converters.
|
2024-12-12 16:55:42 +01:00
|
|
|
|
|
|
|
* The ``ModelAdmin.log_deletion()`` and ``LogEntryManager.log_action()``
|
|
|
|
methods are removed.
|
2024-12-13 09:05:59 +01:00
|
|
|
|
|
|
|
* The undocumented ``django.utils.itercompat.is_iterable()`` function and the
|
|
|
|
``django.utils.itercompat`` module is removed.
|
2024-12-13 09:08:03 +01:00
|
|
|
|
|
|
|
* The ``django.contrib.gis.geoip2.GeoIP2.coords()`` method is removed.
|
2024-12-13 09:09:40 +01:00
|
|
|
|
|
|
|
* The ``django.contrib.gis.geoip2.GeoIP2.open()`` method is removed.
|
2024-12-13 09:16:03 +01:00
|
|
|
|
|
|
|
* Support for passing positional arguments to ``Model.save()`` and
|
|
|
|
``Model.asave()`` is removed.
|
2024-12-13 09:19:12 +01:00
|
|
|
|
|
|
|
* The setter for ``django.contrib.gis.gdal.OGRGeometry.coord_dim`` is removed.
|
2024-12-13 09:30:29 +01:00
|
|
|
|
|
|
|
* The ``check`` keyword argument of ``CheckConstraint`` is removed.
|
2024-12-13 09:33:45 +01:00
|
|
|
|
|
|
|
* The ``get_cache_name()`` method of ``FieldCacheMixin`` is removed.
|
2024-12-12 16:26:06 +01:00
|
|
|
|
|
|
|
* The ``OS_OPEN_FLAGS`` attribute of
|
|
|
|
:class:`~django.core.files.storage.FileSystemStorage` is removed.
|