First, thanks for your very insightful response. I'm trying to reproduce what you've provided, but I'm getting an `InvalidRequestError` when querying on `RefClass`:
*InvalidRequestError: SQL expression, column, or mapped entity expected - got '<class 'RefClass'>'* Indeed, RefClass has no `__mapper__` attribute. Querying on any other object works as intended though. I imagine there's a small detail I'm missing, so I've highlighted the changes from yesterday's post. from sqlalchemy import ( Column, ForeignKey, Integer, create_engine, ) from sqlalchemy.ext.declarative import ( AbstractConcreteBase, declared_attr, declarative_base, has_inherited_table, ) from sqlalchemy.orm import Session Base = declarative_base() class AClass(Base): __tablename__ = 'aclass' id = Column(Integer, primary_key=True) class BClass(Base): __tablename__ = 'bclass' id = Column(Integer, primary_key=True) class RefClass(AbstractConcreteBase, Base): @declared_attr def __tablename__(cls): if cls.__name__ == 'RefClass': return None return cls.__name__.lower() @declared_attr.cascading def id(cls): if cls.__name__ == 'RefClass': return Column(Integer) column_name = '{}.id'.format(cls.ref.__tablename__) return Column(ForeignKey(column_name), primary_key=True) @declared_attr def __mapper_args__(cls): if cls.__name__ == 'RefClass': return {} return { 'concrete': True, 'polymorphic_identity': cls.ref.__name__ } class ARefClass(RefClass): ref = AClass class BRefClass(RefClass): ref = BClass engine = create_engine('sqlite://', echo=True) Base.metadata.bind = engine Base.metadata.create_all() db = Session(engine) Thanks! -- SQLAlchemy - The Python SQL Toolkit and Object Relational Mapper http://www.sqlalchemy.org/ To post example code, please provide an MCVE: Minimal, Complete, and Verifiable Example. See http://stackoverflow.com/help/mcve for a full description. --- 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 https://groups.google.com/group/sqlalchemy. For more options, visit https://groups.google.com/d/optout.