summaryrefslogtreecommitdiff
path: root/lib/sqlalchemy/orm/util.py
diff options
context:
space:
mode:
authorMike Bayer <mike_mp@zzzcomputing.com>2013-06-06 18:06:02 -0400
committerMike Bayer <mike_mp@zzzcomputing.com>2013-06-06 18:06:02 -0400
commit28c3325c4e18d01d7e0403229b452c8fbc345b80 (patch)
tree67576681ff561bcabeae0330bcf64c214bfe29aa /lib/sqlalchemy/orm/util.py
parent768108186a48a94948a7763d0f5c4dfb3f0ce773 (diff)
downloadsqlalchemy-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.py20
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,