一. 角色在数据库中的表示
简单的应用,可能只需要2个用户角色,一个表示普通用户,一个表示管理员。对于这种情况在User模型中添加一个is_administrator布尔值即可。对于复杂的应用,可能需要在普通用户和管理员之间再细分出多个不同等级的角色,分别赋予用户一系列独立的权限。
前面部分我们已经创建了一个roles表,并且users表和roles表构成了一对多的关系,如下是改进都的Role模型:
app/models.py:角色数据库模型
class Role(db.Model):
__tablename__ = "roles"
id = db.Column(db.Integer, primary_key=True)
name = db.Column(db.String(64), unique=True)
default = db.Column(db.Boolean, default=False, index=True)
permissions = db.Column(db.Integer)
users = db.relationship('User', backref='role', lazy='dynamic')
def __init__(self, **kwargs):
super().__init__(**kwargs)
if self.permissions is None:
self.permissions = 0
default字段为布尔类型,所有角色中只有一个角色的default字段为True,表示注册新用户时默认的角色类型。