Hi,
I've got a class mapping with two polymorphic inheritance :
class AbstractA(Base):
__tablename__ = "abstract_a"
id = Column(Integer, primary_key=True)
class_name = Column('class_name', String(50))
__mapper_args__ = {
'polymorphic_on': class_name,
}
#some stuff here
class AbstractB(AbstractA):
__tablename__ = "abstract_b"
id = Column(Integer, ForeignKey('abstract_a.id'),
primary_key=True)
class_name = Column('class_name', String(50))
__mapper_args__ = {
'polymorphic_on': class_name,
'polymorphic_identity': __tablename__,
}
#some stuff here
class ClassA(AbstractB):
__tablename__ = "table_a"
__mapper_args__ = {
'polymorphic_identity': __tablename__,
}
id = Column(Integer, ForeignKey('abstract_b.id'),
primary_key=True)
label = Column('label', String(50))
def __init__(self, label):
self.label = label
I persist a ClassA object :
object = ClassA('toto')
db_session.add(object)
db_session.commit()
When I try to reload the object like this :
reloaded_object = AbstractB.query.first()
I get back a ClassA object (just fine)
but when I try to reload like this :
reloaded_object = AbstractA.query.first()
I get back a AbstractA object because abstract_a.class_name has not
been set to polymorphic_identity.
Is this an issue or expected work?
--
You received this message because you are subscribed to the Google Groups
"sqlalchemy" group.
To post to this group, send email to [email protected].
To unsubscribe from this group, send email to
[email protected].
For more options, visit this group at
http://groups.google.com/group/sqlalchemy?hl=en.