MCPcopy
hub / github.com/django/django / ColPairs

Class ColPairs

django/db/models/expressions.py:1390–1444  ·  view source on GitHub ↗

Source from the content-addressed store, hash-verified

1388
1389
1390class ColPairs(Expression):
1391 def __init__(self, alias, targets, sources, output_field):
1392 super().__init__(output_field=output_field)
1393 self.alias = alias
1394 self.targets = targets
1395 self.sources = sources
1396
1397 def __len__(self):
1398 return len(self.targets)
1399
1400 def __iter__(self):
1401 return iter(self.get_cols())
1402
1403 def __repr__(self):
1404 return (
1405 f"{self.__class__.__name__}({self.alias!r}, {self.targets!r}, "
1406 f"{self.sources!r}, {self.output_field!r})"
1407 )
1408
1409 def get_cols(self):
1410 return [
1411 Col(self.alias, target, source)
1412 for target, source in zip(self.targets, self.sources)
1413 ]
1414
1415 def get_source_expressions(self):
1416 return self.get_cols()
1417
1418 def set_source_expressions(self, exprs):
1419 assert all(isinstance(expr, Col) and expr.alias == self.alias for expr in exprs)
1420 self.targets = [col.target for col in exprs]
1421 self.sources = [col.field for col in exprs]
1422
1423 def as_sql(self, compiler, connection):
1424 cols_sql = []
1425 cols_params = []
1426 cols = self.get_cols()
1427
1428 for col in cols:
1429 sql, params = col.as_sql(compiler, connection)
1430 cols_sql.append(sql)
1431 cols_params.extend(params)
1432
1433 return ", ".join(cols_sql), tuple(cols_params)
1434
1435 def relabeled_clone(self, relabels):
1436 return self.__class__(
1437 relabels.get(self.alias, self.alias), self.targets, self.sources, self.field
1438 )
1439
1440 def resolve_expression(self, *args, **kwargs):
1441 return self
1442
1443 def select_format(self, compiler, sql, params):
1444 return sql, params
1445
1446
1447class Ref(Expression):

Callers 6

build_filterMethod · 0.90
add_fieldsMethod · 0.90
cached_colMethod · 0.90
get_colMethod · 0.90
test_expressionsMethod · 0.90

Calls

no outgoing calls

Tested by 1

test_expressionsMethod · 0.72