Hi, I'm trying to use load_only and joinedload on a relationship model.Asset.parent. The parent relation is polymorphic and can be either Task or Project with the common Base class called Context.
import sqlalchemy.orm import sqlalchemy.inspection entity = model.session.query( model.Asset ).options( sqlalchemy.orm.joinedload('parent').load_only( 'context_type', 'name', 'link' ) ).first() state = sqlalchemy.inspection.inspect(entity.parent) for attribute in state.attrs: is_loaded = ( attribute.loaded_value is not sqlalchemy.orm.base.NO_VALUE ) if is_loaded: print attribute.key # Output: id taskid name context_type The id, name and context_type is from Context. And taskid is primary key on the taskid and is a foreignkey to the context.id. As you can see "name" loads fine but "link" attribute is not loaded. The "link" column is added as a column_property to Context using a __declare_last__. These are simplified versions of the classes: class Context(Base): '''Represent a context.''' context_type = Column(Unicode(32), nullable=False) __mapper_args__ = { 'polymorphic_on': context_type, 'polymorphic_identity': 'context' } name = Column(Unicode(255), default=u'', nullable=False) @declared_attr def id(cls): return Column(CHAR(36), primary_key=True, default=lambda: str(uuid ())) @classmethod def __declare_last__(cls): '''Return link expression query.''' ... cls.link = column_property( sqlalchemy.type_coerce( query, LinkTypeDecorator ).label('link') ) class Task(Context): '''Represent a task.''' taskid = Column( types.CHAR(36), ForeignKey('context.id'), primary_key=True ) __mapper_args__ = { 'polymorphic_identity': 'task' } class Asset(Base): '''Represent an Asset.''' context_id = sqlalchemy.Column( sqlalchemy.CHAR(36), sqlalchemy.ForeignKey('context.id') ) parent = relationship('Context', backref=backref('assets')) Can you see if I'm doing something wrong? -- 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/d/optout.