diff options
author | Mike Bayer <mike_mp@zzzcomputing.com> | 2010-07-08 18:17:23 -0400 |
---|---|---|
committer | Mike Bayer <mike_mp@zzzcomputing.com> | 2010-07-08 18:17:23 -0400 |
commit | 5f68031d15206373cda072d40a6fed37eaa8db14 (patch) | |
tree | 9c153aafe5784d95aa07c6bf24a137d79a361717 /lib/sqlalchemy/orm/query.py | |
parent | 85651a964c438db850498b15e59853f0ab9c52a0 (diff) | |
download | sqlalchemy-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.py | 14 |
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 |