Thanks, Mike! Your example indeed works, but unfortunately when I add inheritance, mapper fails to generate proper (inherited) class: (I've changed code a little, so it represents more what I'm trying to do)
from sqlalchemy import * from sqlalchemy.orm import * from sqlalchemy.ext.declarative import declarative_base engine = create_engine('sqlite://', echo=True) Base = declarative_base() class Detail(Base): __tablename__ = 'detail' id = Column(Integer, primary_key=True) sort = Column(Integer) class Order(Base): __tablename__ = 'order' id = Column(Integer, primary_key=True) class Item(Base): __tablename__ = 'item' id = Column(Integer, primary_key=True) order_id = Column(Integer, ForeignKey('order.id')) detail_id = Column(Integer, ForeignKey('detail.id')) detail = relation(Detail, uselist=False, lazy=False) order = relation(Order, uselist=False) type = Column(String(20)) __mapper_args__ = { 'polymorphic_on' : type} class ValueItem(Item): __mapper_args__ = { 'polymorphic_identity' : 'quantity' } value = Column('quantity_value', Numeric(15, 4)) class ErrorItem(Item): __mapper_args__ = { 'polymorphic_identity' : 'error' } value = Column('error_value', String(15, 4)) Order.items = relation(Item) j = Item.__table__.join(Detail.__table__) itemdetail = mapper(Item, j, non_primary=True) Order.sorteditems = relation(itemdetail, order_by=Detail.__table__.c.sort, viewonly=True) metadata = Base.metadata metadata.create_all(engine) Session = scoped_session(sessionmaker(bind=engine)) order = Order(id=1) Session.add(order) detail = Detail(id=1, sort=1) order.items.append(ValueItem(id=1, detail=detail)) Session.commit() for order in Session.query(Order).all(): for item in order.sorteditems: print item for item in order.items: print item ... <__main__.Item object at 0x881ddac> <__main__.ValueItem object at 0x960da6c> Am I making a obvious mistake somewhere here? -- 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.