Added release date for Django 3.2.

Adjusted wrapping in release notes where needed.
This commit is contained in:
Carlton Gibson 2021-04-06 11:20:59 +02:00
parent 5aea50e57f
commit 0802b404a2
1 changed files with 55 additions and 54 deletions

View File

@ -1,8 +1,8 @@
============================================ ========================
Django 3.2 release notes - UNDER DEVELOPMENT Django 3.2 release notes
============================================ ========================
*Expected April 2021* *April 6, 2021*
Welcome to Django 3.2! Welcome to Django 3.2!
@ -169,11 +169,11 @@ Minor features
:mod:`django.contrib.admin` :mod:`django.contrib.admin`
~~~~~~~~~~~~~~~~~~~~~~~~~~~ ~~~~~~~~~~~~~~~~~~~~~~~~~~~
* :attr:`.ModelAdmin.search_fields` now allows searching against quoted phrases * :attr:`.ModelAdmin.search_fields` now allows searching against quoted
with spaces. phrases with spaces.
* Read-only related fields are now rendered as navigable links if target models * Read-only related fields are now rendered as navigable links if target
are registered in the admin. models are registered in the admin.
* The admin now supports theming, and includes a dark theme that is enabled * The admin now supports theming, and includes a dark theme that is enabled
according to browser settings. See :ref:`admin-theming` for more details. according to browser settings. See :ref:`admin-theming` for more details.
@ -341,8 +341,8 @@ Generic Views
Management Commands Management Commands
~~~~~~~~~~~~~~~~~~~ ~~~~~~~~~~~~~~~~~~~
* :djadmin:`loaddata` now supports fixtures stored in XZ archives (``.xz``) and * :djadmin:`loaddata` now supports fixtures stored in XZ archives (``.xz``)
LZMA archives (``.lzma``). and LZMA archives (``.lzma``).
* :djadmin:`dumpdata` now can compress data in the ``bz2``, ``gz``, ``lzma``, * :djadmin:`dumpdata` now can compress data in the ``bz2``, ``gz``, ``lzma``,
or ``xz`` formats. or ``xz`` formats.
@ -351,10 +351,10 @@ Management Commands
connection. In that case, check for a consistent migration history is connection. In that case, check for a consistent migration history is
skipped. skipped.
* :attr:`.BaseCommand.requires_system_checks` now supports specifying a list of * :attr:`.BaseCommand.requires_system_checks` now supports specifying a list
tags. System checks registered in the chosen tags will be checked for errors of tags. System checks registered in the chosen tags will be checked for
prior to executing the command. In previous versions, either all or none errors prior to executing the command. In previous versions, either all or
of the system checks were performed. none of the system checks were performed.
* Support for colored terminal output on Windows is updated. Various modern * Support for colored terminal output on Windows is updated. Various modern
terminal environments are automatically detected, and the options for terminal environments are automatically detected, and the options for
@ -382,14 +382,14 @@ Models
using the ``condition`` argument with ``lookups``. using the ``condition`` argument with ``lookups``.
* The new :attr:`.Index.include` and :attr:`.UniqueConstraint.include` * The new :attr:`.Index.include` and :attr:`.UniqueConstraint.include`
attributes allow creating covering indexes and covering unique constraints on attributes allow creating covering indexes and covering unique constraints
PostgreSQL 11+. on PostgreSQL 11+.
* The new :attr:`.UniqueConstraint.opclasses` attribute allows setting * The new :attr:`.UniqueConstraint.opclasses` attribute allows setting
PostgreSQL operator classes. PostgreSQL operator classes.
* The :meth:`.QuerySet.update` method now respects the ``order_by()`` clause on * The :meth:`.QuerySet.update` method now respects the ``order_by()`` clause
MySQL and MariaDB. on MySQL and MariaDB.
* :class:`FilteredRelation() <django.db.models.FilteredRelation>` now supports * :class:`FilteredRelation() <django.db.models.FilteredRelation>` now supports
nested relations. nested relations.
@ -448,16 +448,16 @@ Pagination
~~~~~~~~~~ ~~~~~~~~~~
* The new :meth:`django.core.paginator.Paginator.get_elided_page_range` method * The new :meth:`django.core.paginator.Paginator.get_elided_page_range` method
allows generating a page range with some of the values elided. If there are a allows generating a page range with some of the values elided. If there are
large number of pages, this can be helpful for generating a reasonable number a large number of pages, this can be helpful for generating a reasonable
of page links in a template. number of page links in a template.
Requests and Responses Requests and Responses
~~~~~~~~~~~~~~~~~~~~~~ ~~~~~~~~~~~~~~~~~~~~~~
* Response headers are now stored in :attr:`.HttpResponse.headers`. This can be * Response headers are now stored in :attr:`.HttpResponse.headers`. This can
used instead of the original dict-like interface of ``HttpResponse`` objects. be used instead of the original dict-like interface of ``HttpResponse``
Both interfaces will continue to be supported. See objects. Both interfaces will continue to be supported. See
:ref:`setting-header-fields` for details. :ref:`setting-header-fields` for details.
* The new ``headers`` parameter of :class:`~django.http.HttpResponse`, * The new ``headers`` parameter of :class:`~django.http.HttpResponse`,
@ -468,17 +468,17 @@ Requests and Responses
Security Security
~~~~~~~~ ~~~~~~~~
* The :setting:`SECRET_KEY` setting is now checked for a valid value upon first * The :setting:`SECRET_KEY` setting is now checked for a valid value upon
access, rather than when settings are first loaded. This enables running first access, rather than when settings are first loaded. This enables
management commands that do not rely on the ``SECRET_KEY`` without needing to running management commands that do not rely on the ``SECRET_KEY`` without
provide a value. As a consequence of this, calling needing to provide a value. As a consequence of this, calling
:func:`~django.conf.settings.configure` without providing a valid :func:`~django.conf.settings.configure` without providing a valid
``SECRET_KEY``, and then going on to access ``settings.SECRET_KEY`` will now ``SECRET_KEY``, and then going on to access ``settings.SECRET_KEY`` will now
raise an :exc:`~django.core.exceptions.ImproperlyConfigured` exception. raise an :exc:`~django.core.exceptions.ImproperlyConfigured` exception.
* The new ``Signer.sign_object()`` and ``Signer.unsign_object()`` methods allow * The new ``Signer.sign_object()`` and ``Signer.unsign_object()`` methods
signing complex data structures. See :ref:`signing-complex-data` for more allow signing complex data structures. See :ref:`signing-complex-data` for
details. more details.
Also, :func:`signing.dumps() <django.core.signing.dumps>` and Also, :func:`signing.dumps() <django.core.signing.dumps>` and
:func:`~django.core.signing.loads` become shortcuts for :func:`~django.core.signing.loads` become shortcuts for
@ -535,22 +535,22 @@ Tests
* :meth:`.TransactionTestCase.assertQuerysetEqual` now supports direct * :meth:`.TransactionTestCase.assertQuerysetEqual` now supports direct
comparison against another queryset rather than being restricted to comparison against another queryset rather than being restricted to
comparison against a list of string representations of objects when using the comparison against a list of string representations of objects when using
default value for the ``transform`` argument. the default value for the ``transform`` argument.
Utilities Utilities
~~~~~~~~~ ~~~~~~~~~
* The new ``depth`` parameter of ``django.utils.timesince.timesince()`` and * The new ``depth`` parameter of ``django.utils.timesince.timesince()`` and
``django.utils.timesince.timeuntil()`` functions allows specifying the number ``django.utils.timesince.timeuntil()`` functions allows specifying the
of adjacent time units to return. number of adjacent time units to return.
Validators Validators
~~~~~~~~~~ ~~~~~~~~~~
* Built-in validators now include the provided value in the ``params`` argument * Built-in validators now include the provided value in the ``params``
of a raised :exc:`~django.core.exceptions.ValidationError`. This allows argument of a raised :exc:`~django.core.exceptions.ValidationError`. This
custom error messages to use the ``%(value)s`` placeholder. allows custom error messages to use the ``%(value)s`` placeholder.
* The :class:`.ValidationError` equality operator now ignores ``messages`` and * The :class:`.ValidationError` equality operator now ignores ``messages`` and
``params`` ordering. ``params`` ordering.
@ -566,8 +566,8 @@ Database backend API
This section describes changes that may be needed in third-party database This section describes changes that may be needed in third-party database
backends. backends.
* The new ``DatabaseFeatures.introspected_field_types`` property replaces these * The new ``DatabaseFeatures.introspected_field_types`` property replaces
features: these features:
* ``can_introspect_autofield`` * ``can_introspect_autofield``
* ``can_introspect_big_integer_field`` * ``can_introspect_big_integer_field``
@ -608,8 +608,8 @@ backends.
* Third-party database backends must implement support for functional indexes * Third-party database backends must implement support for functional indexes
(:attr:`.Index.expressions`) or set (:attr:`.Index.expressions`) or set
``DatabaseFeatures.supports_expression_indexes`` to ``False``. If ``COLLATE`` ``DatabaseFeatures.supports_expression_indexes`` to ``False``. If
is not a part of the ``CREATE INDEX`` statement, set ``COLLATE`` is not a part of the ``CREATE INDEX`` statement, set
``DatabaseFeatures.collate_as_index_expression`` to ``True``. ``DatabaseFeatures.collate_as_index_expression`` to ``True``.
:mod:`django.contrib.admin` :mod:`django.contrib.admin`
@ -626,8 +626,9 @@ backends.
* Minified JavaScript files are no longer included with the admin. If you * Minified JavaScript files are no longer included with the admin. If you
require these files to be minified, consider using a third party app or require these files to be minified, consider using a third party app or
external build tool. The minified vendored JavaScript files packaged with the external build tool. The minified vendored JavaScript files packaged with
admin (e.g. :ref:`jquery.min.js <contrib-admin-jquery>`) are still included. the admin (e.g. :ref:`jquery.min.js <contrib-admin-jquery>`) are still
included.
* :attr:`.ModelAdmin.prepopulated_fields` no longer strips English stop words, * :attr:`.ModelAdmin.prepopulated_fields` no longer strips English stop words,
such as ``'a'`` or ``'an'``. such as ``'a'`` or ``'an'``.
@ -683,9 +684,9 @@ Miscellaneous
* When an application defines an :class:`~django.apps.AppConfig` subclass in * When an application defines an :class:`~django.apps.AppConfig` subclass in
an ``apps.py`` submodule, Django now uses this configuration automatically, an ``apps.py`` submodule, Django now uses this configuration automatically,
even if it isn't enabled with ``default_app_config``. Set ``default = False`` even if it isn't enabled with ``default_app_config``. Set
in the :class:`~django.apps.AppConfig` subclass if you need to prevent this ``default = False`` in the :class:`~django.apps.AppConfig` subclass if you
behavior. See :ref:`whats-new-3.2` for more details. need to prevent this behavior. See :ref:`whats-new-3.2` for more details.
* Instantiating an abstract model now raises ``TypeError``. * Instantiating an abstract model now raises ``TypeError``.
@ -716,12 +717,12 @@ Miscellaneous
* The password reset mechanism now invalidates tokens when the user email is * The password reset mechanism now invalidates tokens when the user email is
changed. changed.
* :djadmin:`makemessages` command no longer processes invalid locales specified * :djadmin:`makemessages` command no longer processes invalid locales
using :option:`makemessages --locale` option, when they contain hyphens specified using :option:`makemessages --locale` option, when they contain
(``'-'``). hyphens (``'-'``).
* The ``django.contrib.auth.forms.ReadOnlyPasswordHashField`` form field is now * The ``django.contrib.auth.forms.ReadOnlyPasswordHashField`` form field is
:attr:`~django.forms.Field.disabled` by default. Therefore now :attr:`~django.forms.Field.disabled` by default. Therefore
``UserChangeForm.clean_password()`` is no longer required to return the ``UserChangeForm.clean_password()`` is no longer required to return the
initial value. initial value.
@ -755,8 +756,8 @@ Miscellaneous
:meth:`.TestCase.setUpTestData` is deprecated. :meth:`.TestCase.setUpTestData` is deprecated.
* Using a boolean value in :attr:`.BaseCommand.requires_system_checks` is * Using a boolean value in :attr:`.BaseCommand.requires_system_checks` is
deprecated. Use ``'__all__'`` instead of ``True``, and ``[]`` (an empty list) deprecated. Use ``'__all__'`` instead of ``True``, and ``[]`` (an empty
instead of ``False``. list) instead of ``False``.
* The ``whitelist`` argument and ``domain_whitelist`` attribute of * The ``whitelist`` argument and ``domain_whitelist`` attribute of
:class:`~django.core.validators.EmailValidator` are deprecated. Use :class:`~django.core.validators.EmailValidator` are deprecated. Use