システムにユーザー、会社、グループ、および役割モデルがある場合をモデル化しようとしています。関係は次のとおりです。
class User(Base):
__tablename__ = 'users'
id = Column(Integer, primary_key=True)
email = Column(Unicode(50), unique=True, nullable=False)
first_name = Column(Unicode(50), nullable=False)
last_name = Column(Unicode(50), nullable=False)
company_id = Column(Integer, ForeignKey('companies.id'))
class Company(Base):
__tablename__ = 'companies'
id = Column(Integer, primary_key=True)
name = Column(Unicode(200), unique=True, nullable=False)
users = relationship("User", backref="company")
groups = relationship("Group", backref="company")
class Group(Base):
__tablename__ = 'groups'
id = Column(Integer, primary_key=True)
name = Column(Unicode(60), nullable=False)
company_id = Column(Integer, ForeignKey('companies.id'), nullable=False)
roles = relationship("Role", backref="group")
class Role(Base):
__tablename__ = 'roles'
id = Column(Integer, primary_key=True)
name = Column(Unicode(60), nullable=False)
group_id = Column(Integer, ForeignKey('groups.id'), nullable=False)
私の問題は、グループを所有する会社のメンバーにならないと、ユーザーがグループまたはロールのメンバーになれないという制約をどのように適用できるかわからないことです。