Hi,
I want to override a relationship in a subclass to relate to a subclass of 
the base attributes' related class. Perhaps an example of how I thought it 
should work:

{{{
class Load(Base):
    __tablename__ = 'load'
    __mapper_args__ = {
        'polymorphic_identity':'load',
        'polymorphic_on':'polymorphic_type',
    }
    id = Column(Integer, primary_key=True)
    polymorphic_type = Column(Text, nullable=False)
    source_id = Column(Integer, ForeignKey('source.id'))
    source = relationship('Source')

class Production_Load(Load):
    __tablename__ = 'production_load'
    __mapper_args__ = { 'polymorphic_identity':'production_load' }
    id = Column(Integer, ForeignKey('load.id'), primary_key=True)
    source_id = Column(Integer, ForeignKey('measured_source.id'))
    source = relationship('Measured_Source')

class Source(Base):
    __tablename__ = 'source'
    __mapper_args__ = {
        'polymorphic_identity':'source',
        'polymorphic_on':'polymorphic_type',
    }
    id = Column(Integer, primary_key=True)
    polymorphic_type = Column(Text, nullable=False)

class Measured_Source(Source):
    __tablename__ = 'measured_source'
    __mapper_args__ = { 'polymorphic_identity':'measured_source' }

    id = Column(Integer, ForeignKey('source.id'), primary_key=True)
}}}

As you can see, we have Load.source -> Source and I want 
Production_Load.source -> Measured_Source, but when I import the models, I 
get the following warning:

{...}/env/lib/python2.7/site-packages/sqlalchemy/orm/properties.py:1028: 
SAWarning: Warning: relationship 'source' on mapper 
'Mapper|Production_Load|production_load' supersedes the same relationship 
on inherited mapper 'Mapper|Load|load'; this can cause dependency issues 
during flush

and when I try to use Production_Load.source (class level attr) in a query, 
I get the following error:

AttributeError: Neither 'InstrumentedAttribute' object nor 'Comparator' 
object associated with Production_Load.source has an attribute 'conversion'

Is such a thing possible, even with a re-factor of the models?

Thanks,
Eric

-- 
You received this message because you are subscribed to the Google Groups 
"sqlalchemy" group.
To unsubscribe from this group and stop receiving emails from it, send an email 
to sqlalchemy+unsubscr...@googlegroups.com.
To post to this group, send email to sqlalchemy@googlegroups.com.
Visit this group at http://groups.google.com/group/sqlalchemy.
For more options, visit https://groups.google.com/groups/opt_out.

Reply via email to