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 = []
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
sess = create_session()
+
+ self.assertRaises(sa_exc.InvalidRequestError, sess.query(Person).with_polymorphic, Paperwork)
+ self.assertRaises(sa_exc.InvalidRequestError, sess.query(Engineer).with_polymorphic, Boss)
+ self.assertRaises(sa_exc.InvalidRequestError, sess.query(Engineer).with_polymorphic, Person)
+
# compare to entities without related collections to prevent additional lazy SQL from firing on
# loaded entities
emps_without_relations = [