Reference to column alias of the query. For example, Ref('sum_cost') in qs.annotate(sum_cost=Sum('cost')) query.
| 1445 | |
| 1446 | |
| 1447 | class Ref(Expression): |
| 1448 | """ |
| 1449 | Reference to column alias of the query. For example, Ref('sum_cost') in |
| 1450 | qs.annotate(sum_cost=Sum('cost')) query. |
| 1451 | """ |
| 1452 | |
| 1453 | def __init__(self, refs, source): |
| 1454 | super().__init__() |
| 1455 | self.refs, self.source = refs, source |
| 1456 | |
| 1457 | def __repr__(self): |
| 1458 | return "{}({}, {})".format(self.__class__.__name__, self.refs, self.source) |
| 1459 | |
| 1460 | def get_source_expressions(self): |
| 1461 | return [self.source] |
| 1462 | |
| 1463 | def set_source_expressions(self, exprs): |
| 1464 | (self.source,) = exprs |
| 1465 | |
| 1466 | def resolve_expression( |
| 1467 | self, query=None, allow_joins=True, reuse=None, summarize=False, for_save=False |
| 1468 | ): |
| 1469 | # The sub-expression `source` has already been resolved, as this is |
| 1470 | # just a reference to the name of `source`. |
| 1471 | return self |
| 1472 | |
| 1473 | def get_refs(self): |
| 1474 | return {self.refs} |
| 1475 | |
| 1476 | def relabeled_clone(self, relabels): |
| 1477 | clone = self.copy() |
| 1478 | clone.source = self.source.relabeled_clone(relabels) |
| 1479 | return clone |
| 1480 | |
| 1481 | def as_sql(self, compiler, connection): |
| 1482 | return connection.ops.quote_name(self.refs), () |
| 1483 | |
| 1484 | def get_group_by_cols(self): |
| 1485 | return [self] |
| 1486 | |
| 1487 | |
| 1488 | class ExpressionList(Func): |
no outgoing calls