Я создаю панель управления с Flask-Admin и использую Flask-SQLAlchemy для своих моделей, например:
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'))
)
class Role(db.Model, RoleMixin):
__tablename__ = 'role'
id = db.Column(db.Integer(), primary_key=True)
name = db.Column(db.String(80), unique=True)
class User(db.Model, UserMixin):
id = db.Column(db.Integer, primary_key=True)
name = db.Column(db.String(255))
roles = db.relationship('Role', secondary=roles_users,
backref=db.backref('users', lazy='dynamic'))
Я хочу, когда пользователь регистрируется с Flask-Admin , роль по умолчанию для пользователя настроена на client .
Я должен попробовать что-то подобное на roles
столбец:
roles = db.relationship('Role', secondary=roles_users,
backref=db.backref('users', lazy='dynamic'),
default='client') # or default=3 (which is '3' is the client id in roles_user association table.
Но я получил это сообщение:
TypeError: relationship() got an unexpected keyword argument 'default'
И я также попробовал это решение Но теперь работает для меня.
Итак, можно ли установить роль по умолчанию при регистрации пользователя? ...
ПРИМЕЧАНИЕ : В другом случае я также задаю очень похожий вопрос: здесь , но есть в другом случае.Там я хочу, чтобы роль настраивалась, когда я делаю нового пользователя с помощью superuser , а не когда пользователи регистрируются самостоятельно.