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.

Reply via email to