summaryrefslogtreecommitdiff
path: root/django/db
diff options
context:
space:
mode:
Diffstat (limited to 'django/db')
-rw-r--r--django/db/models/base.py2
-rw-r--r--django/db/models/constraints.py21
-rw-r--r--django/db/models/expressions.py4
-rw-r--r--django/db/models/indexes.py4
-rw-r--r--django/db/models/query.py4
-rw-r--r--django/db/models/query_utils.py3
6 files changed, 22 insertions, 16 deletions
diff --git a/django/db/models/base.py b/django/db/models/base.py
index 0b8425aa85..0a5e5ff673 100644
--- a/django/db/models/base.py
+++ b/django/db/models/base.py
@@ -522,7 +522,7 @@ class Model(metaclass=ModelBase):
def __eq__(self, other):
if not isinstance(other, Model):
- return False
+ return NotImplemented
if self._meta.concrete_model != other._meta.concrete_model:
return False
my_pk = self.pk
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()
diff --git a/django/db/models/expressions.py b/django/db/models/expressions.py
index 2b59dd301a..5df765b626 100644
--- a/django/db/models/expressions.py
+++ b/django/db/models/expressions.py
@@ -401,7 +401,9 @@ class BaseExpression:
return tuple(identity)
def __eq__(self, other):
- return isinstance(other, BaseExpression) and other.identity == self.identity
+ if not isinstance(other, BaseExpression):
+ return NotImplemented
+ return other.identity == self.identity
def __hash__(self):
return hash(self.identity)
diff --git a/django/db/models/indexes.py b/django/db/models/indexes.py
index b156366764..49f4989462 100644
--- a/django/db/models/indexes.py
+++ b/django/db/models/indexes.py
@@ -112,4 +112,6 @@ class Index:
)
def __eq__(self, other):
- return (self.__class__ == other.__class__) and (self.deconstruct() == other.deconstruct())
+ if self.__class__ == other.__class__:
+ return self.deconstruct() == other.deconstruct()
+ return NotImplemented
diff --git a/django/db/models/query.py b/django/db/models/query.py
index 4417c17592..794e0faae7 100644
--- a/django/db/models/query.py
+++ b/django/db/models/query.py
@@ -1543,7 +1543,9 @@ class Prefetch:
return None
def __eq__(self, other):
- return isinstance(other, Prefetch) and self.prefetch_to == other.prefetch_to
+ if not isinstance(other, Prefetch):
+ return NotImplemented
+ return self.prefetch_to == other.prefetch_to
def __hash__(self):
return hash((self.__class__, self.prefetch_to))
diff --git a/django/db/models/query_utils.py b/django/db/models/query_utils.py
index 7a667814f4..189fb4fa44 100644
--- a/django/db/models/query_utils.py
+++ b/django/db/models/query_utils.py
@@ -309,8 +309,9 @@ class FilteredRelation:
self.path = []
def __eq__(self, other):
+ if not isinstance(other, self.__class__):
+ return NotImplemented
return (
- isinstance(other, self.__class__) and
self.relation_name == other.relation_name and
self.alias == other.alias and
self.condition == other.condition