Don't use None for the Column type (i.e., detected as the "null" type).  Put 
the type explicitly.   This has been updated in the documentation recently 
since the "None" feature can't be fully supported at this time.    


On May 18, 2010, at 1:34 PM, Kiran Jonnalagadda wrote:

> Is it possible to have multi-level polymorphism in SQLAlchemy? Here's
> an example:
> 
> class Entity(Base):
>    __tablename__ = 'entities'
>    id = Column(Integer, primary_key=True)
>    created_at = Column(DateTime, default=datetime.utcnow,
> nullable=False)
>    entity_type = Column(Unicode(20), nullable=False)
>    __mapper_args__ = {'polymorphic_on': entity_type}
> 
> class File(Entity):
>    __tablename__ = 'files'
>    id = Column(None, ForeignKey('entities.id'), primary_key=True)
>    filepath = Column(Unicode(255), nullable=False)
>    file_type = Column(Unicode(20), nullable=False)
>    __mapper_args__ = {'polymorphic_identity': u'file',
> 'polymorphic_on': file_type)
> 
> class Image(File):
>    __mapper_args__ = {'polymorphic_identity': u'image'}
>    __tablename__ = 'images'
>    id = Column(None, ForeignKey('files.id'), primary_key=True)
>    width = Column(Integer)
>    height = Column(Integer)
> 
> When I call Base.metadata.create_all(), SQLAlchemy raises the
> following error: NotImplementedError: Can't generate DDL for the null
> type. This error goes away if I remove the Image model.
> 
> What gives?
> 
> I sense that declaring both polymorphic_identity and polymorphic_on in
> File isn't doing the expected thing, but I'm not sure how else to do
> this.

-- 
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