roles users = db.Table(
'roles_users',
db.Column('user_id', db.Integer(), db.ForeignKey('user.id')),
db.Column('role_id', db.Integer(), db.ForeignKey('role.id'))
)
Above mentioned code is for roles_users table
class Role(db.Model, RoleMixin):
id = db.Column(db.Integer(), primary_key=True)
name = db.Column(db.String(80), unique=True)
description = db.Column(db.String(255))
def __str__(self):
return self.name
Above mentioned code build Role table and returns name of specific role(SuperAdmin, Admin, User)
class User(db.Model, UserMixin):
id = db.Column(db.Integer, primary_key=True)
first_name = db.Column(db.String(255))
last_name = db.Column(db.String(255))
email = db.Column(db.String(255), unique=True)
password = db.Column(db.String(255))
active = db.Column(db.Boolean())
roles = db.relationship('Role', secondary=roles_users,
backref=db.backref('users', lazy='dynamic'))
managername = db.Column(db.String(20))
managers = db.relationship('Manager', backref='user', lazy='dynamic')
def __str__(self):
return self.first_name
Class User for user database
class Manager(db.Model, RoleMixin):
id = db.Column(db.Integer, primary_key=True)
username = db.Column(db.String(20))
email = db.Column(db.String(50))
user_id = db.Column(db.Integer, db.ForeignKey('user.id'), nullable=True)
def __repr__(self):
return '<Manager %r>' %(self.username)
class manager for manager database
user_datastore = SQLAlchemyUserDatastore(db, User, Role, Manager)
security = Security(app, user_datastore)
** user_datastore =SQLAlchemyUserDatastore(db, User, Role, Manager) TypeError: init () takes 4 positional arguments but 5 were given
Looks like you are using flask-security - which of course has no concept of 'Manager' - so there isn't any reason to pass that class to flask-security constructor. The rest of the definition looks reasonable - so possibly a better question would be to describe what you are trying to do with your manager class in terms of authorization. Possibly, flask-security's support for permissions within roles would get you going in the right direction - Manager's could be given a role that has some extra permissions.... just conjecture.
The technical post webpages of this site follow the CC BY-SA 4.0 protocol. If you need to reprint, please indicate the site URL or the original address.Any question please contact:yoyou2525@163.com.