diff options
author | Stéphane "Twidi" Angel <s.angel@twidi.com> | 2022-07-07 04:26:49 +0200 |
---|---|---|
committer | Mariusz Felisiak <felisiak.mariusz@gmail.com> | 2022-07-08 08:17:42 +0200 |
commit | ccbf714ebeff51d1370789e5e487a978d0e2dbfb (patch) | |
tree | b358e51931b1bad5f0890969cb1630f7792d81cd /django/db/models/constraints.py | |
parent | 41019e48bbf082c985e6ba3bad34d118b903bff1 (diff) | |
download | django-ccbf714ebeff51d1370789e5e487a978d0e2dbfb.tar.gz |
Fixed #33829 -- Made BaseConstraint.deconstruct() and equality handle violation_error_message.
Regression in 667105877e6723c6985399803a364848891513cc.
Diffstat (limited to 'django/db/models/constraints.py')
-rw-r--r-- | django/db/models/constraints.py | 20 |
1 files changed, 17 insertions, 3 deletions
diff --git a/django/db/models/constraints.py b/django/db/models/constraints.py index 9949b50b1e..86f015465a 100644 --- a/django/db/models/constraints.py +++ b/django/db/models/constraints.py @@ -14,12 +14,15 @@ __all__ = ["BaseConstraint", "CheckConstraint", "Deferrable", "UniqueConstraint" class BaseConstraint: - violation_error_message = _("Constraint “%(name)s” is violated.") + default_violation_error_message = _("Constraint “%(name)s” is violated.") + violation_error_message = None def __init__(self, name, violation_error_message=None): self.name = name if violation_error_message is not None: self.violation_error_message = violation_error_message + else: + self.violation_error_message = self.default_violation_error_message @property def contains_expressions(self): @@ -43,7 +46,13 @@ class BaseConstraint: def deconstruct(self): path = "%s.%s" % (self.__class__.__module__, self.__class__.__name__) path = path.replace("django.db.models.constraints", "django.db.models") - return (path, (), {"name": self.name}) + kwargs = {"name": self.name} + if ( + self.violation_error_message is not None + and self.violation_error_message != self.default_violation_error_message + ): + kwargs["violation_error_message"] = self.violation_error_message + return (path, (), kwargs) def clone(self): _, args, kwargs = self.deconstruct() @@ -94,7 +103,11 @@ class CheckConstraint(BaseConstraint): def __eq__(self, other): if isinstance(other, CheckConstraint): - return self.name == other.name and self.check == other.check + return ( + self.name == other.name + and self.check == other.check + and self.violation_error_message == other.violation_error_message + ) return super().__eq__(other) def deconstruct(self): @@ -273,6 +286,7 @@ class UniqueConstraint(BaseConstraint): and self.include == other.include and self.opclasses == other.opclasses and self.expressions == other.expressions + and self.violation_error_message == other.violation_error_message ) return super().__eq__(other) |