summaryrefslogtreecommitdiff
path: root/django/db/models/lookups.py
diff options
context:
space:
mode:
Diffstat (limited to 'django/db/models/lookups.py')
-rw-r--r--django/db/models/lookups.py15
1 files changed, 10 insertions, 5 deletions
diff --git a/django/db/models/lookups.py b/django/db/models/lookups.py
index 4c08999fb6..eef7bc93a5 100644
--- a/django/db/models/lookups.py
+++ b/django/db/models/lookups.py
@@ -151,11 +151,16 @@ class Lookup(Expression):
# expression unless they're wrapped in a CASE WHEN.
wrapped = False
exprs = []
- for expr in (self.lhs, self.rhs):
- if connection.ops.conditional_expression_supported_in_where_clause(expr):
- expr = Case(When(expr, then=True), default=False)
- wrapped = True
- exprs.append(expr)
+ if getattr(self.lhs, "conditional", False) and getattr(
+ self.rhs, "conditional", False
+ ):
+ for expr in (self.lhs, self.rhs):
+ if connection.ops.conditional_expression_supported_in_where_clause(
+ expr
+ ):
+ expr = Case(When(expr, then=True), default=False)
+ wrapped = True
+ exprs.append(expr)
lookup = type(self)(*exprs) if wrapped else self
return lookup.as_sql(compiler, connection)