summaryrefslogtreecommitdiff
path: root/lib/sqlalchemy/orm/query.py
diff options
context:
space:
mode:
authorMike Bayer <mike_mp@zzzcomputing.com>2010-07-08 18:17:23 -0400
committerMike Bayer <mike_mp@zzzcomputing.com>2010-07-08 18:17:23 -0400
commit5f68031d15206373cda072d40a6fed37eaa8db14 (patch)
tree9c153aafe5784d95aa07c6bf24a137d79a361717 /lib/sqlalchemy/orm/query.py
parent85651a964c438db850498b15e59853f0ab9c52a0 (diff)
downloadsqlalchemy-5f68031d15206373cda072d40a6fed37eaa8db14.tar.gz
- added "expr" to the column descriptions accessor, this is
an expression that matches on identity the original expression passed to the query. In particular you can pass it into order_by() and similar.
Diffstat (limited to 'lib/sqlalchemy/orm/query.py')
-rw-r--r--lib/sqlalchemy/orm/query.py14
1 files changed, 10 insertions, 4 deletions
diff --git a/lib/sqlalchemy/orm/query.py b/lib/sqlalchemy/orm/query.py
index 0afe622c1..28ddc1f13 100644
--- a/lib/sqlalchemy/orm/query.py
+++ b/lib/sqlalchemy/orm/query.py
@@ -1589,16 +1589,19 @@ class Query(object):
'name':'User',
'type':User,
'aliased':False,
+ 'expr':User,
},
{
'name':'id',
'type':Integer(),
- 'aliased':False
+ 'aliased':False,
+ 'expr':User.id,
},
{
'name':'user2',
'type':User,
- 'aliased':True
+ 'aliased':True,
+ 'expr':user_alias
}
]
@@ -1608,6 +1611,7 @@ class Query(object):
'name':ent._label_name,
'type':ent.type,
'aliased':getattr(ent, 'is_aliased_class', False),
+ 'expr':ent.expr
}
for ent in self._entities
]
@@ -2404,8 +2408,8 @@ class _MapperEntity(_QueryEntity):
query._entities.append(self)
self.entities = [entity]
- self.entity_zero = entity
-
+ self.entity_zero = self.expr = entity
+
def setup_entity(self, entity, mapper, adapter,
from_obj, is_aliased_class, with_polymorphic):
self.mapper = mapper
@@ -2553,6 +2557,8 @@ class _ColumnEntity(_QueryEntity):
"""Column/expression based entity."""
def __init__(self, query, column):
+ self.expr = column
+
if isinstance(column, basestring):
column = sql.literal_column(column)
self._label_name = column.name