[Sqlalchemy-tickets] [sqlalchemy] #2762: Relationship lazy configuration doesn't work with polymorp
Brought to you by:
zzzeek
|
From: sqlalchemy <mi...@zz...> - 2013-06-20 14:47:05
|
#2762: Relationship lazy configuration doesn't work with polymorphism
----------------------+-----------------------------------------
Reporter: schlamar | Owner: zzzeek
Type: defect | Status: new
Priority: medium | Milestone:
Component: orm | Severity: no triage selected yet
Keywords: | Progress State: awaiting triage
----------------------+-----------------------------------------
Testcase:
{{{
#!python
from sqlalchemy import create_engine, Column, ForeignKey, Integer
from sqlalchemy.orm import relationship, sessionmaker
from sqlalchemy.ext.declarative import declarative_base
Base = declarative_base()
class RelatedModel(Base):
__tablename__ = 'related_model'
id = Column(Integer, primary_key=True)
class Model(Base):
__tablename__ = 'model'
id = Column(Integer, primary_key=True)
mtype = Column(Integer, nullable=False)
__mapper_args__ = {'polymorphic_on': mtype}
class SubModel(Model):
__tablename__ = 'submodel'
id = Column(Integer, ForeignKey('model.id'), primary_key=True)
__mapper_args__ = {'polymorphic_identity': 1}
related_model_id = Column(Integer, ForeignKey('related_model.id'))
related_model = relationship('RelatedModel', lazy='joined')
def main():
engine = create_engine('sqlite:///:memory:')
Base.metadata.create_all(engine)
Session = sessionmaker(bind=engine)
session = Session()
s = SubModel()
s.related_model = RelatedModel()
session.add(s)
session.commit()
session.close()
session = Session()
s = session.query(Model).one()
session.close()
s.related_model
}}}
I expect that the relationship `SubModel -> RelatedModel` is already
loaded, even when querying against the base class. However, the above code
raises `DetachedInstanceError: Parent instance <SubModel at 0x2b465f0> is
not bound to a Session; lazy load operation of attribute 'related_model'
cannot proceed`.
--
Ticket URL: <http://www.sqlalchemy.org/trac/ticket/2762>
sqlalchemy <http://www.sqlalchemy.org/>
The Database Toolkit for Python
|