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.

Reply via email to