from sqlalchemy import Column, Integer, ForeignKey from sqlalchemy.orm import relationship, foreign, remote from crudkit.core.base import CRUDMixin from muck.models.dbref import Dbref, ObjectType class Thing(Dbref): __tablename__ = "things" id = Column(Integer, ForeignKey("dbref.id"), primary_key=True) value = Column(Integer, nullable=False, default=0) home_id = Column(Integer, ForeignKey("dbref.id"), nullable=True) home = relationship("Dbref", remote_side=[CRUDMixin.id], foreign_keys=[home_id], primaryjoin=lambda: foreign(Thing.home_id) == remote(Dbref.id)) __mapper_args__ = { "polymorphic_identity": ObjectType.THING, "inherit_condition": id == Dbref.id }