diff options
Diffstat (limited to 'lib/sqlalchemy/orm/strategies.py')
| -rw-r--r-- | lib/sqlalchemy/orm/strategies.py | 18 |
1 files changed, 16 insertions, 2 deletions
diff --git a/lib/sqlalchemy/orm/strategies.py b/lib/sqlalchemy/orm/strategies.py index 2674b9c6f..567c09fff 100644 --- a/lib/sqlalchemy/orm/strategies.py +++ b/lib/sqlalchemy/orm/strategies.py @@ -208,10 +208,24 @@ class DeferredColumnLoader(LoaderStrategy): def setup_query(self, context, entity, path, loadopt, adapter, only_load_props=None, **kwargs): + if ( - loadopt and self.group and + ( + loadopt and + 'undefer_pks' in loadopt.local_opts and + set(self.columns).intersection(self.parent.primary_key) + ) + or + ( + loadopt and + self.group and loadopt.local_opts.get('undefer_group', False) == self.group - ) or (only_load_props and self.key in only_load_props): + ) + or + ( + only_load_props and self.key in only_load_props + ) + ): self.parent_property._get_strategy_by_cls(ColumnLoader).\ setup_query(context, entity, path, loadopt, adapter, **kwargs) |
