diff options
| author | Mike Bayer <mike_mp@zzzcomputing.com> | 2008-11-07 18:20:53 +0000 |
|---|---|---|
| committer | Mike Bayer <mike_mp@zzzcomputing.com> | 2008-11-07 18:20:53 +0000 |
| commit | 9b360dda29f5dbf260d27f43247b1adc9298c51a (patch) | |
| tree | 9b203e11a47b876c603a65926c8195c8a210fa63 /lib | |
| parent | e6141ef8aefd4f35bc7f1058e89efece23d698b2 (diff) | |
| download | sqlalchemy-9b360dda29f5dbf260d27f43247b1adc9298c51a.tar.gz | |
- Fixed bug preventing declarative-bound "column" objects
from being used in column_mapped_collection(). [ticket:1174]
Diffstat (limited to 'lib')
| -rw-r--r-- | lib/sqlalchemy/orm/collections.py | 12 |
1 files changed, 4 insertions, 8 deletions
diff --git a/lib/sqlalchemy/orm/collections.py b/lib/sqlalchemy/orm/collections.py index 497ef5941..2105a4fe6 100644 --- a/lib/sqlalchemy/orm/collections.py +++ b/lib/sqlalchemy/orm/collections.py @@ -104,6 +104,7 @@ import sys import weakref import sqlalchemy.exceptions as sa_exc +from sqlalchemy.sql import expression from sqlalchemy import schema import sqlalchemy.util as sautil @@ -130,18 +131,13 @@ def column_mapped_collection(mapping_spec): from sqlalchemy.orm.util import _state_mapper from sqlalchemy.orm.attributes import instance_state - if isinstance(mapping_spec, schema.Column): + cols = [expression._no_literals(q) for q in sautil.to_list(mapping_spec)] + if len(cols) == 1: def keyfunc(value): state = instance_state(value) m = _state_mapper(state) - return m._get_state_attr_by_column(state, mapping_spec) + return m._get_state_attr_by_column(state, cols[0]) else: - cols = [] - for c in mapping_spec: - if not isinstance(c, schema.Column): - raise sa_exc.ArgumentError( - "mapping_spec tuple may only contain columns") - cols.append(c) mapping_spec = tuple(cols) def keyfunc(value): state = instance_state(value) |
