一个用户有多个角色,一个角色有多个用户
# 用户角色 多对多关系
sys_user_role = Table('sys_user_role', Base.metadata,
Column('sys_user_id', ForeignKey('sys_user.id'), primary_key=True),
Column('role_id', ForeignKey('role.id'), primary_key=True)
)
# 用户
class SysUser(Base):
__tablename__ = 'sys_user'
id = Column(UUID, primary_key=True, default=lambda: str(uuid.uuid4()))
username = Column(String(80), unique=True)
password = Column(String(80), unique=False)
nickname = Column(String(80), unique=False)
token = Column(String(80), unique=True)
login_time = Column(DateTime(), unique=False)
# many to many SysUser<->Role
roles = relationship('Role',
secondary=sys_user_role,
back_populates='sys_users')
def __init__(self, username, password, nickname):
self.username = username
self.password = password
self.nickname = nickname
def __repr__(self):
return "<User(username='%s', password='%s', nickname='%s')>" % (self.username, self.password, self.nickname)
# 角色
class Role(Base):
__tablename__ = 'role'
id = Column(UUID, primary_key=True, default=lambda: str(uuid.uuid4()))
role = Column(String(80), unique=True)
nickname = Column(String(80), unique=False)
sys_users = relationship('SysUser',
secondary=sys_user_role,
back_populates='roles')
permits = relationship('Permit',
secondary=role_permit,
back_populates='roles')
def __init__(self, role, nickname):
self.role = role
self.nickname = nickname
def __repr__(self):
return "<Role(nickname='%s')>" % self.nickname