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

Method resolve_expression

django/db/models/sql/query.py:1259–1287  ·  view source on GitHub ↗
(self, query, *args, **kwargs)

Source from the content-addressed store, hash-verified

1257 )
1258
1259 def resolve_expression(self, query, *args, **kwargs):
1260 clone = self.clone()
1261 # Subqueries need to use a different set of aliases than the outer
1262 # query.
1263 clone.bump_prefix(query)
1264 clone.subquery = True
1265 clone.where.resolve_expression(query, *args, **kwargs)
1266 # Resolve combined queries.
1267 if clone.combinator:
1268 clone.combined_queries = tuple(
1269 [
1270 combined_query.resolve_expression(query, *args, **kwargs)
1271 for combined_query in clone.combined_queries
1272 ]
1273 )
1274 for key, value in clone.annotations.items():
1275 resolved = value.resolve_expression(query, *args, **kwargs)
1276 if hasattr(resolved, "external_aliases"):
1277 resolved.external_aliases.update(clone.external_aliases)
1278 clone.annotations[key] = resolved
1279 # Outer query's aliases are considered external.
1280 for alias, table in query.alias_map.items():
1281 clone.external_aliases[alias] = (
1282 isinstance(table, Join)
1283 and table.join_field.related_model._meta.db_table != alias
1284 ) or (
1285 isinstance(table, BaseTable) and table.table_name != table.table_alias
1286 )
1287 return clone
1288
1289 def get_external_cols(self):
1290 exprs = chain(self.annotations.values(), self.where.children)

Callers 10

add_update_fieldsMethod · 0.45
get_order_byMethod · 0.45
prepare_valueMethod · 0.45
as_sqlMethod · 0.45
get_aggregationMethod · 0.45
joinMethod · 0.45
add_annotationMethod · 0.45
resolve_lookup_valueMethod · 0.45
build_filterMethod · 0.45

Calls 4

cloneMethod · 0.95
bump_prefixMethod · 0.80
itemsMethod · 0.45
updateMethod · 0.45

Tested by

no test coverage detected