diff options
Diffstat (limited to 'lib/sqlalchemy')
| -rw-r--r-- | lib/sqlalchemy/orm/mapper.py | 3 | ||||
| -rw-r--r-- | lib/sqlalchemy/orm/query.py | 2 |
2 files changed, 4 insertions, 1 deletions
diff --git a/lib/sqlalchemy/orm/mapper.py b/lib/sqlalchemy/orm/mapper.py index 72edc4e4b..c0a73e2b2 100644 --- a/lib/sqlalchemy/orm/mapper.py +++ b/lib/sqlalchemy/orm/mapper.py @@ -253,6 +253,9 @@ class Mapper(object): mappers = list(self.polymorphic_iterator()) elif spec: mappers = [_class_to_mapper(m) for m in util.to_list(spec)] + for m in mappers: + if not m.isa(self): + raise sa_exc.InvalidRequestError("%r does not inherit from %r" % (m, self)) else: mappers = [] diff --git a/lib/sqlalchemy/orm/query.py b/lib/sqlalchemy/orm/query.py index 47d00964d..5df13d8d9 100644 --- a/lib/sqlalchemy/orm/query.py +++ b/lib/sqlalchemy/orm/query.py @@ -1381,7 +1381,7 @@ class _MapperEntity(_QueryEntity): if cls_or_mappers is None: query._reset_polymorphic_adapter(self.mapper) return - + mappers, from_obj = self.mapper._with_polymorphic_args(cls_or_mappers, selectable) self._with_polymorphic = mappers |
