How to assign Roles to new user in Flask - TypeError: __init__() takes exactly 1 argument (3 given)

How to assign Roles to new user in Flask - TypeError: __init__() takes exactly 1 argument (3 given)

我想在用户在 Flask 中注册后(使用 flask.ext.user)为他们分配角色。

我根据以下定义用户角色和角色:https://pythonhosted.org/Flask-User/roles_required_app.html#create-roles-required-app-py

但是当我尝试在用户注册后自动添加角色时:

@user_registered.connect_via(app)
def _after_reg_hook(sender, user, **extra):
    new_role = UserRoles(user.id,1)

我收到以下错误:

TypeError: __init__() takes exactly 1 argument (3 given)

不幸的是,doco 示例(上面链接)没有提供在注册后添加角色的实用方法,所以不确定哪里出了问题。

SQLAlchemy 提供了一个默认构造函数,它将 named 参数分配给相应的属性。您传入了 位置 个参数。

UserRoles(user_id=user.id, role_id=1)

但是,您不应该直接实例化一个关联,事实上这个例子有点误导,因为在这种情况下没有理由为关联定义一个完整的模型,因为您没有存储任何额外的数据与协会。

而是将 Role 直接分配给 User 上的 roles 集合(或 Role 上的 users 集合)。请注意,这不会在创建重复角色时进行检查,您应该遵循 unique object 的方法。