我想在用户注册Flask之后为用户分配角色(使用flask.ext.user)。
我按照https://pythonhosted.org/Flask-User/roles_required_app.html#create-roles-required-app-py
定义UserRoles和角色但是当我尝试在用户注册后自动添加角色时:
@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示例(上面链接的)没有提供在注册后添加角色的实用方法,因此不确定出现了什么问题。
答案 0 :(得分:3)
SQLAlchemy提供了一个默认构造函数,它将命名的参数分配给相应的属性。你传递了位置参数。
UserRoles(user_id=user.id, role_id=1)
但是,你不应该直接实例化一个关联,事实上这个例子有点误导,因为在这种情况下没有理由为关联定义一个完整的模型,因为你'不与关联存储任何其他数据。
而是直接将Role
分配给roles
上的User
集合(或users
上的Role
集合)。请注意,在创建重复角色时不会检查,您应该遵循unique object配方。