【发布时间】:2021-11-09 12:06:20
【问题描述】:
我有 3 个班级:
- 用户
- 员工
- 经理
Manager 继承自 Employee。用户表不与继承相关。
到目前为止一切顺利:
class User(Base):
__tablename__ = 'user'
id = Column(Integer, primary_key=True)
email = Column(String(255))
class Employee(AbstractConcreteBase, Base):
name = Column(String(30))
class Manager(Employee):
__tablename__ = 'manager'
employee_id = Column(Integer, primary_key=True)
dept = Column(String(30))
__mapper_args__ = {'polymorphic_identity':'manager', 'concrete':True}
它创建了我想要的用户和管理器。
但是,
如果我们在父类中引入一个 ForeignKey,上述中断:
class Employee(AbstractConcreteBase, Base):
name = Column(String(30))
user_id = Column(Integer, ForeignKey('user.id'))
错误是:
sqlalchemy.exc.InvalidRequestError:
Columns with foreign keys to other columns must be declared as @declared_attr callables on declarative mixin classes.
到目前为止,我还不懂the mixin docs (link)
在我的基类(在本例中为员工)中允许外键需要什么?
【问题讨论】:
标签: python sqlalchemy