On Sep 26, 2010, at 6:38 PM, Julien Iguchi-Cartigny wrote: > Hi, > > I'm trying to use polymorphic_on with several inheritances: > > engine = create_engine( > 'mysql://xxx:y...@localhost:3306/zzz?charset=utf8&use_unicode=0', > pool_recycle=3600, echo=True) > > Base = declarative_base() > > class AbstractPersistent(object): > version = Column('VERSION', Integer) > last_modified_by = Column('LAST_MODIFIED_BY', String(255)) > last_modified_date = Column('LAST_MODIFIED_DATE', Date) > created_by = Column('CREATED_BY', String(255)) > created_date = Column('CREATED_DATE', Date) > > class AbstractNamed(AbstractPersistent): > eid = Column('ENTERPRISE_ID', String(255)) > title = Column('TITLE', String(255)) > description = Column('DESCRIPTION', String(255)) > > class AbstractContainer(AbstractNamed): > __tablename__ = 'CM_MEMBER_CONTAINER_T' > id = Column('MEMBER_CONTAINER_ID',Integer,primary_key=True) > discriminator = Column('CLASS_DISCR', String(100)) > __mapper_args__ = {'polymorphic_on': discriminator } > > class CourseSet(Base,AbstractContainer): > __mapper_args__ = {'polymorphic_identity': > 'org.sakaiproject.coursemanagement.impl.CourseSetCmImpl'}
AbstractContainer is not mapped, its a mixin, so its __mapper_args__ are not used until a subclass of Base is invoked, which starts up a declarative mapping. Your only mapped class then is CourseSet, which has its own __mapper_args__ , that override those of AbstractContainer - they are ignored. To combine __mapper_args__ from a mapped class with those of a mixin, see the example at http://www.sqlalchemy.org/docs/orm/extensions/declarative.html?highlight=declarative#combining-table-mapper-arguments-from-multiple-mixins . It uses __table_args__ but the same concept of creating a full dictionary of arguments applies for __mapper_args__ as well. -- You received this message because you are subscribed to the Google Groups "sqlalchemy" group. To post to this group, send email to sqlalch...@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.