diff options
| author | Xavier Fernandez <xavier.fernandez@beta.gouv.fr> | 2023-02-14 21:06:45 +0100 |
|---|---|---|
| committer | Mariusz Felisiak <felisiak.mariusz@gmail.com> | 2023-02-23 10:58:20 +0100 |
| commit | 5b3d3e400ab9334ba429ca360c9818c6dfc3a51b (patch) | |
| tree | 03bd0bc014819b45f3941917a9faf9e2a8eb5bdc /docs | |
| parent | 51c9bb7cd16081133af4f0ab6d06572660309730 (diff) | |
Fixed #34338 -- Allowed customizing code of ValidationError in BaseConstraint and subclasses.
Diffstat (limited to 'docs')
| -rw-r--r-- | docs/ref/contrib/postgres/constraints.txt | 12 | ||||
| -rw-r--r-- | docs/ref/models/constraints.txt | 32 | ||||
| -rw-r--r-- | docs/releases/5.0.txt | 12 |
3 files changed, 51 insertions, 5 deletions
diff --git a/docs/ref/contrib/postgres/constraints.txt b/docs/ref/contrib/postgres/constraints.txt index fcf50b8b5f..abc5e4e4e4 100644 --- a/docs/ref/contrib/postgres/constraints.txt +++ b/docs/ref/contrib/postgres/constraints.txt @@ -12,7 +12,7 @@ PostgreSQL supports additional data integrity constraints available from the ``ExclusionConstraint`` ======================= -.. class:: ExclusionConstraint(*, name, expressions, index_type=None, condition=None, deferrable=None, include=None, violation_error_message=None) +.. class:: ExclusionConstraint(*, name, expressions, index_type=None, condition=None, deferrable=None, include=None, violation_error_code=None, violation_error_message=None) Creates an exclusion constraint in the database. Internally, PostgreSQL implements exclusion constraints using indexes. The default index type is @@ -133,6 +133,16 @@ used for queries that select only included fields ``include`` is supported for GiST indexes. PostgreSQL 14+ also supports ``include`` for SP-GiST indexes. +``violation_error_code`` +------------------------ + +.. versionadded:: 5.0 + +.. attribute:: ExclusionConstraint.violation_error_code + +The error code used when ``ValidationError`` is raised during +:ref:`model validation <validating-objects>`. Defaults to ``None``. + ``violation_error_message`` --------------------------- diff --git a/docs/ref/models/constraints.txt b/docs/ref/models/constraints.txt index baaacd8754..f248de0315 100644 --- a/docs/ref/models/constraints.txt +++ b/docs/ref/models/constraints.txt @@ -48,7 +48,7 @@ option. ``BaseConstraint`` ================== -.. class:: BaseConstraint(*, name, violation_error_message=None) +.. class:: BaseConstraint(* name, violation_error_code=None, violation_error_message=None) Base class for all constraints. Subclasses must implement ``constraint_sql()``, ``create_sql()``, ``remove_sql()`` and @@ -68,6 +68,16 @@ All constraints have the following parameters in common: The name of the constraint. You must always specify a unique name for the constraint. +``violation_error_code`` +------------------------ + +.. versionadded:: 5.0 + +.. attribute:: BaseConstraint.violation_error_code + +The error code used when ``ValidationError`` is raised during +:ref:`model validation <validating-objects>`. Defaults to ``None``. + ``violation_error_message`` --------------------------- @@ -94,7 +104,7 @@ This method must be implemented by a subclass. ``CheckConstraint`` =================== -.. class:: CheckConstraint(*, check, name, violation_error_message=None) +.. class:: CheckConstraint(*, check, name, violation_error_code=None, violation_error_message=None) Creates a check constraint in the database. @@ -121,7 +131,7 @@ ensures the age field is never less than 18. ``UniqueConstraint`` ==================== -.. class:: UniqueConstraint(*expressions, fields=(), name=None, condition=None, deferrable=None, include=None, opclasses=(), violation_error_message=None) +.. class:: UniqueConstraint(*expressions, fields=(), name=None, condition=None, deferrable=None, include=None, opclasses=(), violation_error_code=None, violation_error_message=None) Creates a unique constraint in the database. @@ -242,6 +252,22 @@ creates a unique index on ``username`` using ``varchar_pattern_ops``. ``opclasses`` are ignored for databases besides PostgreSQL. +``violation_error_code`` +------------------------ + +.. versionadded:: 5.0 + +.. attribute:: UniqueConstraint.violation_error_code + +The error code used when ``ValidationError`` is raised during +:ref:`model validation <validating-objects>`. Defaults to ``None``. + +This code is *not used* for :class:`UniqueConstraint`\s with +:attr:`~UniqueConstraint.fields` and without a +:attr:`~UniqueConstraint.condition`. Such :class:`~UniqueConstraint`\s have the +same error code as constraints defined with :attr:`.Field.unique` or in +:attr:`Meta.unique_together <django.db.models.Options.constraints>`. + ``violation_error_message`` --------------------------- diff --git a/docs/releases/5.0.txt b/docs/releases/5.0.txt index 14e767cfd8..84689f223d 100644 --- a/docs/releases/5.0.txt +++ b/docs/releases/5.0.txt @@ -78,7 +78,10 @@ Minor features :mod:`django.contrib.postgres` ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ -* ... +* The new :attr:`~.ExclusionConstraint.violation_error_code` attribute of + :class:`~django.contrib.postgres.constraints.ExclusionConstraint` allows + customizing the ``code`` of ``ValidationError`` raised during + :ref:`model validation <validating-objects>`. :mod:`django.contrib.redirects` ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ @@ -182,6 +185,13 @@ Models and :meth:`.QuerySet.aupdate_or_create` methods allows specifying a different field values for the create operation. +* The new ``violation_error_code`` attribute of + :class:`~django.db.models.BaseConstraint`, + :class:`~django.db.models.CheckConstraint`, and + :class:`~django.db.models.UniqueConstraint` allows customizing the ``code`` + of ``ValidationError`` raised during + :ref:`model validation <validating-objects>`. + Requests and Responses ~~~~~~~~~~~~~~~~~~~~~~ |
