summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorSergey Fedoseev <fedoseev.sergey@gmail.com>2020-06-30 06:30:02 +0200
committerMariusz Felisiak <felisiak.mariusz@gmail.com>2020-06-30 07:02:21 +0200
commit9d752dabe38602a71452ed8c23253e780a40a560 (patch)
treee9d6a2441abf7b001b0ce7bcca831b6d8da669b3
parentec5aa2161d8015a3fe57dcbbfe14200cd18f0a16 (diff)
Refs #28925 -- Simplified CombinedExpression.as_sql() a bit.
-rw-r--r--django/db/models/expressions.py20
1 files changed, 10 insertions, 10 deletions
diff --git a/django/db/models/expressions.py b/django/db/models/expressions.py
index a156c5e881..2b3a4a93e2 100644
--- a/django/db/models/expressions.py
+++ b/django/db/models/expressions.py
@@ -442,20 +442,20 @@ class CombinedExpression(SQLiteNumericMixin, Expression):
def as_sql(self, compiler, connection):
try:
- lhs_output = self.lhs.output_field
+ lhs_type = self.lhs.output_field.get_internal_type()
except FieldError:
- lhs_output = None
+ lhs_type = None
try:
- rhs_output = self.rhs.output_field
+ rhs_type = self.rhs.output_field.get_internal_type()
except FieldError:
- rhs_output = None
- if (not connection.features.has_native_duration_field and
- ((lhs_output and lhs_output.get_internal_type() == 'DurationField') or
- (rhs_output and rhs_output.get_internal_type() == 'DurationField'))):
+ rhs_type = None
+ if (
+ not connection.features.has_native_duration_field and
+ 'DurationField' in {lhs_type, rhs_type}
+ ):
return DurationExpression(self.lhs, self.connector, self.rhs).as_sql(compiler, connection)
- if (lhs_output and rhs_output and self.connector == self.SUB and
- lhs_output.get_internal_type() in {'DateField', 'DateTimeField', 'TimeField'} and
- lhs_output.get_internal_type() == rhs_output.get_internal_type()):
+ datetime_fields = {'DateField', 'DateTimeField', 'TimeField'}
+ if self.connector == self.SUB and lhs_type in datetime_fields and lhs_type == rhs_type:
return TemporalSubtraction(self.lhs, self.rhs).as_sql(compiler, connection)
expressions = []
expression_params = []