On Aug 15, 2010, at 6:52 AM, jean-philippe serafin wrote:
> 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?
polymorphic_on only goes on the base class. SQLA should be changed to raise
an error on the setup you have above.
>
> --
> 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.
>
--
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.