如何在SQLAlchemy中添加多个继承关系?

时间:2016-08-21 04:45:07

标签: sqlalchemy polymorphism

所以,我有一个用户表,一个雇员表和一个租户表。

我正在使用联接表继承。

class User(Base):

    __tablename__ = 'usr_users'

    usr_user_id = Column(Integer, primary_key=True)
    usr_first_name = Column(Unicode(50))
    usr_last_name = Column(Unicode(50))

    tenant = relationship("Tenant", uselist=False, backref="User")

    usr_type = Column(String(24))

    __mapper_args__ = {
        'polymorphic_identity':'user',
        'polymorphic_on': usr_type
    }

class Tenant(User):
    """
    Application's user model.
    """
    __tablename__ = 'ten_tenants'

    ten_tenant_id = Column(Integer, ForeignKey('usr_users.usr_user_id'), primary_key=True)

    __mapper_args__ = {
        'polymorphic_identity': 'tenant'
    }


class Employee(User):
    __tablename__ = 'emp_employees'

    emp_employee_id = Column(Integer, ForeignKey('usr_users.usr_user_id'), primary_key=True)

    __mapper_args__ = {
        'polymorphic_identity': 'employee'
    }

当用户成为员工时,我已经完成了所有工作。

    user = Employee()
    session.add(user)

用户表中的条目,以及"类型中的值" "员工"。

但是,如果我的用户既是员工又是租户呢?

我使用什么语法来提取用户,然后添加租户关系,以便生成的用户同时拥有员工关系和租户关系?

0 个答案:

没有答案