diff options
author | ElizabethU <elizabeth.uselton@gmail.com> | 2019-09-02 19:09:31 -0700 |
---|---|---|
committer | Mariusz Felisiak <felisiak.mariusz@gmail.com> | 2019-10-01 17:58:19 +0200 |
commit | 54ea290e5bbd19d87bd8dba807738eeeaf01a362 (patch) | |
tree | d83c186bde9f50faa13840e6ee227e3bb1e02ad6 /django/db/models/constraints.py | |
parent | 6475e6318c970359a2f02798910a917229ee17d7 (diff) | |
download | django-54ea290e5bbd19d87bd8dba807738eeeaf01a362.tar.gz |
Fixed #30651 -- Made __eq__() methods return NotImplemented for not implemented comparisons.
Changed __eq__ to return NotImplemented instead of False if compared to
an object of the same type, as is recommended by the Python data model
reference. Now these models can be compared to ANY (or other objects
with __eq__ overwritten) without returning False automatically.
Diffstat (limited to 'django/db/models/constraints.py')
-rw-r--r-- | django/db/models/constraints.py | 21 |
1 files changed, 10 insertions, 11 deletions
diff --git a/django/db/models/constraints.py b/django/db/models/constraints.py index e7f81d3ee9..fe0d42a168 100644 --- a/django/db/models/constraints.py +++ b/django/db/models/constraints.py @@ -54,11 +54,9 @@ class CheckConstraint(BaseConstraint): return "<%s: check='%s' name=%r>" % (self.__class__.__name__, self.check, self.name) def __eq__(self, other): - return ( - isinstance(other, CheckConstraint) and - self.name == other.name and - self.check == other.check - ) + if isinstance(other, CheckConstraint): + return self.name == other.name and self.check == other.check + return super().__eq__(other) def deconstruct(self): path, args, kwargs = super().deconstruct() @@ -106,12 +104,13 @@ class UniqueConstraint(BaseConstraint): ) def __eq__(self, other): - return ( - isinstance(other, UniqueConstraint) and - self.name == other.name and - self.fields == other.fields and - self.condition == other.condition - ) + if isinstance(other, UniqueConstraint): + return ( + self.name == other.name and + self.fields == other.fields and + self.condition == other.condition + ) + return super().__eq__(other) def deconstruct(self): path, args, kwargs = super().deconstruct() |