summaryrefslogtreecommitdiff
path: root/lib
diff options
context:
space:
mode:
authorMike Bayer <mike_mp@zzzcomputing.com>2008-11-07 18:20:53 +0000
committerMike Bayer <mike_mp@zzzcomputing.com>2008-11-07 18:20:53 +0000
commit9b360dda29f5dbf260d27f43247b1adc9298c51a (patch)
tree9b203e11a47b876c603a65926c8195c8a210fa63 /lib
parente6141ef8aefd4f35bc7f1058e89efece23d698b2 (diff)
downloadsqlalchemy-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.py12
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)