diff options
| author | Mike Bayer <mike_mp@zzzcomputing.com> | 2009-05-17 22:20:28 +0000 |
|---|---|---|
| committer | Mike Bayer <mike_mp@zzzcomputing.com> | 2009-05-17 22:20:28 +0000 |
| commit | eb30cb1febce323d3647527d8a63a8267c943832 (patch) | |
| tree | f795420741971a9cb5a419a2ce5426fa43bb6594 /lib/sqlalchemy | |
| parent | ab0434d6488772b927c3937737784e92b660e118 (diff) | |
| download | sqlalchemy-eb30cb1febce323d3647527d8a63a8267c943832.tar.gz | |
- The "polymorphic discriminator" column may be part of a
primary key, and it will be populated with the correct
discriminator value. [ticket:1300]
Diffstat (limited to 'lib/sqlalchemy')
| -rw-r--r-- | lib/sqlalchemy/orm/mapper.py | 8 | ||||
| -rw-r--r-- | lib/sqlalchemy/sql/expression.py | 2 |
2 files changed, 5 insertions, 5 deletions
diff --git a/lib/sqlalchemy/orm/mapper.py b/lib/sqlalchemy/orm/mapper.py index 87c4c8100..b84f0166a 100644 --- a/lib/sqlalchemy/orm/mapper.py +++ b/lib/sqlalchemy/orm/mapper.py @@ -1297,10 +1297,6 @@ class Mapper(object): for col in mapper._cols_by_table[table]: if col is mapper.version_id_col: params[col.key] = 1 - elif col in pks: - value = mapper._get_state_attr_by_column(state, col) - if value is not None: - params[col.key] = value elif mapper.polymorphic_on and mapper.polymorphic_on.shares_lineage(col): if self._should_log_debug: self._log_debug("Using polymorphic identity '%s' for insert column '%s'" % (mapper.polymorphic_identity, col.key)) @@ -1309,6 +1305,10 @@ class Mapper(object): col.server_default is None) or value is not None): params[col.key] = value + elif col in pks: + value = mapper._get_state_attr_by_column(state, col) + if value is not None: + params[col.key] = value else: value = mapper._get_state_attr_by_column(state, col) if ((col.default is None and diff --git a/lib/sqlalchemy/sql/expression.py b/lib/sqlalchemy/sql/expression.py index 859419022..65c3c2135 100644 --- a/lib/sqlalchemy/sql/expression.py +++ b/lib/sqlalchemy/sql/expression.py @@ -1587,7 +1587,7 @@ class ColumnElement(ClauseElement, _CompareMixin): def shares_lineage(self, othercolumn): """Return True if the given ``ColumnElement`` has a common ancestor to this ``ColumnElement``.""" - return len(self.proxy_set.intersection(othercolumn.proxy_set)) > 0 + return bool(self.proxy_set.intersection(othercolumn.proxy_set)) def _make_proxy(self, selectable, name=None): """Create a new ``ColumnElement`` representing this |
