I have a pretty simple case. A base class with three sub-classes, and then 
a final class that inherits from the three derived classes. When 
persisting, sqlalchemy only sets the properties of the parent class and the 
first child class.

In all other respects the sub-class is behaving properly; it has the 
correct attributes, etc.

So, if EvidenceLineItem inherits from EvidenceString first, only the string 
property (and the properties in Evidence) will update; if I change the 
first inherited class to EvidenceAmount, amount will be persisted, but the 
rest not.

I'll try declared_attr, but I'm pretty sure that this behaviour isn't what 
is intended.

~ethan

class Evidence(Base):
    __tablename__ = "evidence"
    discriminator = Column(DBEnum(ProofItemClassType), nullable=False) 
    __mapper_args__ = { 'polymorphic_on': discriminator,
                        'polymorphic_identity': ProofItemClassType.generic }

class EvidenceString(Evidence):
    __mapper_args__ = { 'polymorphic_identity': ProofItemClassType.string }
    string = Column(String(length=255), index=True)

class EvidenceAmount(Evidence):
    __mapper_args__ = { 'polymorphic_identity': ProofItemClassType.amount }
    amount = Column(Numeric(precision=7, scale=2), index=True)

class EvidenceQuantity(Evidence):
    __mapper_args__ = { 'polymorphic_identity': ProofItemClassType.quantity 
}
    quantity = Column(Integer)

class EvidenceLineItem(EvidenceString, EvidenceAmount, EvidenceQuantity):
    __mapper_args__ = { 'polymorphic_identity': 
ProofItemClassType.line_item }

-- 
You received this message because you are subscribed to the Google Groups 
"sqlalchemy" group.
To view this discussion on the web visit 
https://groups.google.com/d/msg/sqlalchemy/-/5hEAmVfC-EYJ.
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.

Reply via email to