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 Room(Dbref): __tablename__ = "rooms" id = Column(Integer, ForeignKey("dbref.id"), primary_key=True) dropto_id = Column(Integer, ForeignKey("dbref.id"), nullable=True) dropto = relationship("Dbref", remote_side=[CRUDMixin.id], foreign_keys=[dropto_id], primaryjoin=lambda: foreign(Room.dropto_id) == remote(Dbref.id)) __mapper_args__ = { "polymorphic_identity": ObjectType.ROOM, "inherit_condition": id == Dbref.id }