diff options
| author | Mike Bayer <mike_mp@zzzcomputing.com> | 2007-12-21 21:55:20 +0000 |
|---|---|---|
| committer | Mike Bayer <mike_mp@zzzcomputing.com> | 2007-12-21 21:55:20 +0000 |
| commit | 0875860acd322dce0d947d800889e7aae1376c10 (patch) | |
| tree | f3be68898467dcadc1e2b56dbea08df7103c86b8 /lib/sqlalchemy | |
| parent | 1a9f98f4f654b6ee65a6a4119b0b143d0c0a9a93 (diff) | |
| download | sqlalchemy-0875860acd322dce0d947d800889e7aae1376c10.tar.gz | |
some rudimentary fixes to get instance-level deferreds/lazy loads to transfer over on merge()
Diffstat (limited to 'lib/sqlalchemy')
| -rw-r--r-- | lib/sqlalchemy/orm/properties.py | 11 |
1 files changed, 9 insertions, 2 deletions
diff --git a/lib/sqlalchemy/orm/properties.py b/lib/sqlalchemy/orm/properties.py index aadac5122..e0bf2e6e8 100644 --- a/lib/sqlalchemy/orm/properties.py +++ b/lib/sqlalchemy/orm/properties.py @@ -65,8 +65,13 @@ class ColumnProperty(StrategizedProperty): getattr(state.class_, self.key).impl.set(state, value, None) def merge(self, session, source, dest, dont_load, _recursive): - setattr(dest, self.key, getattr(source, self.key, None)) - + value = attributes.get_as_list(source._state, self.key, passive=True) + if value: + setattr(dest, self.key, value[0]) + else: + # TODO: lazy callable should merge to the new instance + dest._state.expire_attributes([self.key]) + def get_col_value(self, column, value): return value @@ -334,6 +339,8 @@ class PropertyLoader(StrategizedProperty): def merge(self, session, source, dest, dont_load, _recursive): if not "merge" in self.cascade: + # TODO: lazy callable should merge to the new instance + dest._state.expire_attributes([self.key]) return instances = attributes.get_as_list(source._state, self.key, passive=True) if not instances: |
