From 90aabd730a2a434c227faf8a927b0e2ccd67e291 Mon Sep 17 00:00:00 2001 From: Mariusz Felisiak Date: Tue, 24 May 2022 10:02:53 +0200 Subject: [PATCH] Fixed #33724 -- Doc'd exclude argument changes in model validation. MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Thanks אורי for the report. Follow up to 1ea7e3157d1f9b4db71e768d75ea57e47dbd49f9. --- docs/ref/models/instances.txt | 20 ++++++++++++-------- docs/releases/4.1.txt | 6 ++++++ 2 files changed, 18 insertions(+), 8 deletions(-) diff --git a/docs/ref/models/instances.txt b/docs/ref/models/instances.txt index 9aa9486f4a..71fb880740 100644 --- a/docs/ref/models/instances.txt +++ b/docs/ref/models/instances.txt @@ -224,8 +224,8 @@ This method calls :meth:`Model.clean_fields()`, :meth:`Model.clean()`, in that order and raises a :exc:`~django.core.exceptions.ValidationError` that has a ``message_dict`` attribute containing errors from all four stages. -The optional ``exclude`` argument can be used to provide a list of field names -that can be excluded from validation and cleaning. +The optional ``exclude`` argument can be used to provide a ``set`` of field +names that can be excluded from validation and cleaning. :class:`~django.forms.ModelForm` uses this argument to exclude fields that aren't present on your form from being validated since any errors raised could not be corrected by the user. @@ -249,12 +249,16 @@ The first step ``full_clean()`` performs is to clean each individual field. The ``validate_constraints`` argument was added. +.. versionchanged:: 4.1 + + An ``exclude`` value is now converted to a ``set`` rather than a ``list``. + .. method:: Model.clean_fields(exclude=None) This method will validate all fields on your model. The optional ``exclude`` -argument lets you provide a list of field names to exclude from validation. It -will raise a :exc:`~django.core.exceptions.ValidationError` if any fields fail -validation. +argument lets you provide a ``set`` of field names to exclude from validation. +It will raise a :exc:`~django.core.exceptions.ValidationError` if any fields +fail validation. The second step ``full_clean()`` performs is to call :meth:`Model.clean()`. This method should be overridden to perform custom validation on your model. @@ -355,8 +359,8 @@ uniqueness constraints defined via :attr:`.Field.unique`, :attr:`.Field.unique_for_date`, :attr:`.Field.unique_for_month`, :attr:`.Field.unique_for_year`, or :attr:`Meta.unique_together ` on your model instead of individual -field values. The optional ``exclude`` argument allows you to provide a list of -field names to exclude from validation. It will raise a +field values. The optional ``exclude`` argument allows you to provide a ``set`` +of field names to exclude from validation. It will raise a :exc:`~django.core.exceptions.ValidationError` if any fields fail validation. :class:`~django.db.models.UniqueConstraint`\s defined in the @@ -380,7 +384,7 @@ Finally, ``full_clean()`` will check any other constraints on your model. This method validates all constraints defined in :attr:`Meta.constraints `. The -optional ``exclude`` argument allows you to provide a list of field names to +optional ``exclude`` argument allows you to provide a ``set`` of field names to exclude from validation. It will raise a :exc:`~django.core.exceptions.ValidationError` if any constraints fail validation. diff --git a/docs/releases/4.1.txt b/docs/releases/4.1.txt index 7b922256ec..49bd7c48bd 100644 --- a/docs/releases/4.1.txt +++ b/docs/releases/4.1.txt @@ -561,6 +561,12 @@ Miscellaneous ``URLResolver._callback_strs``, and ``URLPattern.lookup_str()`` are moved to ``django.contrib.admindocs.utils``. +* The :meth:`.Model.full_clean` method now converts an ``exclude`` value to the + ``set``. It’s also preferable to pass an ``exclude`` value as a ``set`` to + the :meth:`.Model.clean_fields`, :meth:`.Model.full_clean`, + :meth:`.Model.validate_unique`, and :meth:`.Model.validate_constraints` + methods. + .. _deprecated-features-4.1: Features deprecated in 4.1