I looked at this further, i think I got it working half way. Index: lib/sqlalchemy/orm/util.py =================================================================== --- lib/sqlalchemy/orm/util.py (revision 6072) +++ lib/sqlalchemy/orm/util.py (working copy) @@ -387,6 +387,7 @@ if left_mapper or right_mapper: self._orm_mappers = (left_mapper, right_mapper)
+ parent_mapper = onclause.parententity._AliasedClass__mapper if isinstance(onclause, basestring): prop = left_mapper.get_property(onclause) elif isinstance(onclause, attributes.QueryableAttribute): @@ -411,6 +412,9 @@ onclause = sj else: onclause = pj + + if parent_mapper._single_table_criterion: + onclause = sql.and_(onclause, parent_mapper._single_table_criterion) self._target_adapter = target_adapter expression.Join.__init__(self, left, right, onclause, isouter) It works for queries of the form : items = session .query (Item).with_polymorphic([FooItem]).options(eagerload(FooItem.child)) but not : items = session.query(Item).with_polymorphic([FooItem, BarItem]).options(eagerload(FooItem.foochild, BarItem.barchild)) I'll keep trying around for a solution that solves the above, and then hopefully someone more knowledgeable can pick it up or guide me. - Jae On Aug 28, 2009, at 4:43 PM, Jae Kwon wrote: > > I've seen similar discussions here, but it's been a while so perhaps > things have changed. > > class Foo(Base): > __tablename__ = 'foo' > type = Column(Integer) > __mapper_args__ = {'polymorphic_on': type} > ... > > class BarFoo(Foo): > __mapper_args__ = {'polymorphic_identity': 1} > bar_id = Column(Integer) > # relations > bar = relation('Bar') > > class BazFoo(Foo): > __mapper_args__ = {'polymorphic_identity': 2} > baz_id = Column(Integer) > # relations > baz = relation('Baz') > > ## assume existence of Bar and Baz objects > > Is there a way to say, query all Foo objects while eager-loading the > bar/baz relations? > > - Jae > > > > --~--~---------~--~----~------------~-------~--~----~ You received this message because you are subscribed to the Google Groups "sqlalchemy" group. To post to this group, send email to sqlalchemy@googlegroups.com To unsubscribe from this group, send email to sqlalchemy+unsubscr...@googlegroups.com For more options, visit this group at http://groups.google.com/group/sqlalchemy?hl=en -~----------~----~----~----~------~----~------~--~---