summaryrefslogtreecommitdiff
path: root/django/contrib/postgres
diff options
context:
space:
mode:
Diffstat (limited to 'django/contrib/postgres')
-rw-r--r--django/contrib/postgres/constraints.py11
-rw-r--r--django/contrib/postgres/indexes.py1
2 files changed, 5 insertions, 7 deletions
diff --git a/django/contrib/postgres/constraints.py b/django/contrib/postgres/constraints.py
index ff702c53b0..a31f657183 100644
--- a/django/contrib/postgres/constraints.py
+++ b/django/contrib/postgres/constraints.py
@@ -1,6 +1,5 @@
from types import NoneType
-from django.contrib.postgres.indexes import OpClass
from django.core.exceptions import ValidationError
from django.db import DEFAULT_DB_ALIAS, NotSupportedError
from django.db.backends.ddl_references import Expressions, Statement, Table
@@ -208,12 +207,10 @@ class ExclusionConstraint(BaseConstraint):
if isinstance(expr, F) and expr.name in exclude:
return
rhs_expression = expression.replace_expressions(replacements)
- # Remove OpClass because it only has sense during the constraint
- # creation.
- if isinstance(expression, OpClass):
- expression = expression.get_source_expressions()[0]
- if isinstance(rhs_expression, OpClass):
- rhs_expression = rhs_expression.get_source_expressions()[0]
+ if hasattr(expression, "get_expression_for_validation"):
+ expression = expression.get_expression_for_validation()
+ if hasattr(rhs_expression, "get_expression_for_validation"):
+ rhs_expression = rhs_expression.get_expression_for_validation()
lookup = PostgresOperatorLookup(lhs=expression, rhs=rhs_expression)
lookup.postgres_operator = operator
lookups.append(lookup)
diff --git a/django/contrib/postgres/indexes.py b/django/contrib/postgres/indexes.py
index cc944ed335..05fdbeed5e 100644
--- a/django/contrib/postgres/indexes.py
+++ b/django/contrib/postgres/indexes.py
@@ -244,6 +244,7 @@ class SpGistIndex(PostgresIndex):
class OpClass(Func):
template = "%(expressions)s %(name)s"
+ constraint_validation_compatible = False
def __init__(self, expression, name):
super().__init__(expression, name=name)