diff options
author | Jason Kirtland <jek@discorporate.us> | 2007-05-03 18:22:31 +0000 |
---|---|---|
committer | Jason Kirtland <jek@discorporate.us> | 2007-05-03 18:22:31 +0000 |
commit | 5606c01d391aebca903029c5a8882ea964adc566 (patch) | |
tree | 571f31edd61995adbfedbad7137ca1d5e024dc2e /lib/sqlalchemy/ext/associationproxy.py | |
parent | 300d1d2c136462201c79ff19cb6b8c2bbc0c8dfd (diff) | |
download | sqlalchemy-5606c01d391aebca903029c5a8882ea964adc566.tar.gz |
- Test assoc proxy lazy loads, fixed __set__ race on single scalar assocs
Diffstat (limited to 'lib/sqlalchemy/ext/associationproxy.py')
-rw-r--r-- | lib/sqlalchemy/ext/associationproxy.py | 7 |
1 files changed, 6 insertions, 1 deletions
diff --git a/lib/sqlalchemy/ext/associationproxy.py b/lib/sqlalchemy/ext/associationproxy.py index 0913d6c48..d86297bc1 100644 --- a/lib/sqlalchemy/ext/associationproxy.py +++ b/lib/sqlalchemy/ext/associationproxy.py @@ -114,13 +114,15 @@ class AssociationProxy(object): return self._get_property().mapper.class_ target_class = property(_target_class) + def _target_is_scalar(self): + return not self._get_property().uselist def __get__(self, obj, class_): if obj is None: self.owning_class = class_ return elif self.scalar is None: - self.scalar = not self._get_property().uselist + self.scalar = self._target_is_scalar() if self.scalar: return getattr(getattr(obj, self.target_collection), self.value_attr) @@ -133,6 +135,9 @@ class AssociationProxy(object): return proxy def __set__(self, obj, values): + if self.scalar is None: + self.scalar = self._target_is_scalar() + if self.scalar: creator = self.creator and self.creator or self.target_class target = getattr(obj, self.target_collection) |