MCPcopy
hub / github.com/django/django / resolve_expression

Method resolve_expression

django/db/models/expressions.py:778–808  ·  view source on GitHub ↗
(
        self, query=None, allow_joins=True, reuse=None, summarize=False, for_save=False
    )

Source from the content-addressed store, hash-verified

776 return expression_wrapper % sql, tuple(expression_params)
777
778 def resolve_expression(
779 self, query=None, allow_joins=True, reuse=None, summarize=False, for_save=False
780 ):
781 resolved = super().resolve_expression(
782 query,
783 allow_joins,
784 reuse,
785 summarize,
786 for_save,
787 )
788 if not isinstance(self, (DurationExpression, TemporalSubtraction)):
789 try:
790 lhs_type = resolved.lhs.output_field.get_internal_type()
791 except (AttributeError, FieldError):
792 lhs_type = None
793 try:
794 rhs_type = resolved.rhs.output_field.get_internal_type()
795 except (AttributeError, FieldError):
796 rhs_type = None
797 if "DurationField" in {lhs_type, rhs_type} and lhs_type != rhs_type:
798 return DurationExpression(
799 resolved.lhs, resolved.connector, resolved.rhs
800 )
801 datetime_fields = {"DateField", "DateTimeField", "TimeField"}
802 if (
803 self.connector == self.SUB
804 and lhs_type in datetime_fields
805 and lhs_type == rhs_type
806 ):
807 return TemporalSubtraction(resolved.lhs, resolved.rhs)
808 return resolved
809
810 @cached_property
811 def allowed_default(self):

Callers

nothing calls this directly

Calls 4

DurationExpressionClass · 0.85
TemporalSubtractionClass · 0.85
resolve_expressionMethod · 0.45
get_internal_typeMethod · 0.45

Tested by

no test coverage detected