diff options
author | Mike Bayer <mike_mp@zzzcomputing.com> | 2013-06-06 18:06:02 -0400 |
---|---|---|
committer | Mike Bayer <mike_mp@zzzcomputing.com> | 2013-06-06 18:06:02 -0400 |
commit | 28c3325c4e18d01d7e0403229b452c8fbc345b80 (patch) | |
tree | 67576681ff561bcabeae0330bcf64c214bfe29aa /lib/sqlalchemy/orm/util.py | |
parent | 768108186a48a94948a7763d0f5c4dfb3f0ce773 (diff) | |
download | sqlalchemy-28c3325c4e18d01d7e0403229b452c8fbc345b80.tar.gz |
dial back the default "flatness" a bit, it will be there for joinedload and query.join(), but if
you're dealing with aliased() or with_polymorphic() you need to say "flat=True". Just the one
flag though, "flat" implies "aliased".
Diffstat (limited to 'lib/sqlalchemy/orm/util.py')
-rw-r--r-- | lib/sqlalchemy/orm/util.py | 20 |
1 files changed, 11 insertions, 9 deletions
diff --git a/lib/sqlalchemy/orm/util.py b/lib/sqlalchemy/orm/util.py index c21e7eace..7ac3ac96a 100644 --- a/lib/sqlalchemy/orm/util.py +++ b/lib/sqlalchemy/orm/util.py @@ -223,8 +223,8 @@ class ORMAdapter(sql_util.ColumnAdapter): and the AliasedClass if any is referenced. """ - def __init__(self, entity, equivalents=None, - chain_to=None, adapt_required=False): + def __init__(self, entity, equivalents=None, adapt_required=False, + chain_to=None): info = inspection.inspect(entity) self.mapper = info.mapper @@ -493,7 +493,7 @@ class AliasedClass(object): """ def __init__(self, cls, alias=None, name=None, - flat=True, + flat=False, adapt_on_names=False, # TODO: None for default here? with_polymorphic_mappers=(), @@ -502,7 +502,8 @@ class AliasedClass(object): use_mapper_path=False): mapper = _class_to_mapper(cls) if alias is None: - alias = mapper._with_polymorphic_selectable.alias(name=name, flat=flat) + alias = mapper._with_polymorphic_selectable.alias( + name=name, flat=flat) self._aliased_insp = AliasedInsp( self, mapper, @@ -701,7 +702,7 @@ inspection._inspects(AliasedClass)(lambda target: target._aliased_insp) inspection._inspects(AliasedInsp)(lambda target: target) -def aliased(element, alias=None, name=None, adapt_on_names=False): +def aliased(element, alias=None, name=None, flat=False, adapt_on_names=False): """Produce an alias of the given element, usually an :class:`.AliasedClass` instance. @@ -775,13 +776,14 @@ def aliased(element, alias=None, name=None, adapt_on_names=False): raise sa_exc.ArgumentError( "adapt_on_names only applies to ORM elements" ) - return element.alias(name) + return element.alias(name, flat=flat) else: - return AliasedClass(element, alias=alias, + return AliasedClass(element, alias=alias, flat=flat, name=name, adapt_on_names=adapt_on_names) def with_polymorphic(base, classes, selectable=False, + flat=False, polymorphic_on=None, aliased=False, innerjoin=False, _use_mapper_path=False): """Produce an :class:`.AliasedClass` construct which specifies @@ -837,8 +839,8 @@ def with_polymorphic(base, classes, selectable=False, mappers, selectable = primary_mapper.\ _with_polymorphic_args(classes, selectable, innerjoin=innerjoin) - if aliased: - selectable = selectable.alias(flat=True) + if aliased or flat: + selectable = selectable.alias(flat=flat) return AliasedClass(base, selectable, with_polymorphic_mappers=mappers, |