diff options
| author | Mike Bayer <mike_mp@zzzcomputing.com> | 2007-12-04 17:06:55 +0000 |
|---|---|---|
| committer | Mike Bayer <mike_mp@zzzcomputing.com> | 2007-12-04 17:06:55 +0000 |
| commit | cb46ae4fe97d364e8a160b6114519f125432c1e8 (patch) | |
| tree | 7587e312c51101ff86a45b4dbaaa5338a0a5ed6a /lib/sqlalchemy | |
| parent | f5a4554c52b82cc7fb3da41eb51e6e9b5bd3c526 (diff) | |
| download | sqlalchemy-cb46ae4fe97d364e8a160b6114519f125432c1e8.tar.gz | |
- relaxed rules on column_property() expressions having labels; any
ColumnElement is accepted now, as the compiler auto-labels non-labeled
ColumnElements now. a selectable, like a select() statement, still
requires conversion to ColumnElement via as_scalar() or label().
Diffstat (limited to 'lib/sqlalchemy')
| -rw-r--r-- | lib/sqlalchemy/orm/properties.py | 8 | ||||
| -rw-r--r-- | lib/sqlalchemy/sql/compiler.py | 2 |
2 files changed, 4 insertions, 6 deletions
diff --git a/lib/sqlalchemy/orm/properties.py b/lib/sqlalchemy/orm/properties.py index 806c91a2b..8980a4498 100644 --- a/lib/sqlalchemy/orm/properties.py +++ b/lib/sqlalchemy/orm/properties.py @@ -12,7 +12,7 @@ to handle flush-time dependency sorting and processing. """ from sqlalchemy import sql, schema, util, exceptions, logging -from sqlalchemy.sql import util as sql_util, visitors, operators +from sqlalchemy.sql import util as sql_util, visitors, operators, ColumnElement from sqlalchemy.orm import mapper, sync, strategies, attributes, dependency from sqlalchemy.orm import session as sessionlib from sqlalchemy.orm import util as mapperutil @@ -38,10 +38,8 @@ class ColumnProperty(StrategizedProperty): self.comparator = ColumnProperty.ColumnComparator(self) # sanity check for col in columns: - if not hasattr(col, 'name'): - if hasattr(col, 'label'): - raise ArgumentError('ColumnProperties must be named for the mapper to work with them. Try .label() to fix this') - raise ArgumentError('%r is not a valid candidate for ColumnProperty' % col) + if not isinstance(col, ColumnElement): + raise ArgumentError('column_property() must be given a ColumnElement as its argument. Try .label() or .as_scalar() for Selectables to fix this.') def create_strategy(self): if self.deferred: diff --git a/lib/sqlalchemy/sql/compiler.py b/lib/sqlalchemy/sql/compiler.py index 9b24dd521..d94d3fef6 100644 --- a/lib/sqlalchemy/sql/compiler.py +++ b/lib/sqlalchemy/sql/compiler.py @@ -438,7 +438,7 @@ class DefaultCompiler(engine.Compiled): if isinstance(column, sql._Label): return column - if select.use_labels and column._label: + if select.use_labels and getattr(column, '_label', None): return column.label(column._label) if \ |
