summaryrefslogtreecommitdiff
path: root/django
diff options
context:
space:
mode:
authorgabn88 <gerben_m88@hotmail.com>2024-01-11 17:43:52 +0100
committerSarah Boyce <42296566+sarahboyce@users.noreply.github.com>2024-10-10 09:20:37 +0200
commite970bb7ca71c00594b42a024a15a8ac007cc2c7a (patch)
treebc3178c664e587534a90c1b35f3d229bfc030380 /django
parent1979b1403adeb437831a1a8885353e158ec9ad55 (diff)
Fixed #35103 -- Used provided error code and message when fields is set without a condition on UniqueConstraint.
Diffstat (limited to 'django')
-rw-r--r--django/db/models/constraints.py16
1 files changed, 12 insertions, 4 deletions
diff --git a/django/db/models/constraints.py b/django/db/models/constraints.py
index 3859a60e2f..788e2b635b 100644
--- a/django/db/models/constraints.py
+++ b/django/db/models/constraints.py
@@ -690,11 +690,19 @@ class UniqueConstraint(BaseConstraint):
queryset = queryset.exclude(pk=model_class_pk)
if not self.condition:
if queryset.exists():
- if self.fields:
- # When fields are defined, use the unique_error_message() for
- # backward compatibility.
+ if (
+ self.fields
+ and self.violation_error_message
+ == self.default_violation_error_message
+ ):
+ # When fields are defined, use the unique_error_message() as
+ # a default for backward compatibility.
+ validation_error_message = instance.unique_error_message(
+ model, self.fields
+ )
raise ValidationError(
- instance.unique_error_message(model, self.fields),
+ validation_error_message,
+ code=validation_error_message.code,
)
raise ValidationError(
self.get_violation_error_message(),