2014-02-07 5 views
0

Я пытаюсь сделать регистрацию в своей работе с флешкой. Я уже создал две роли («admin» и «user») и один администратор (я) без каких-либо проблем. Однако, когда я пытаюсь зарегистрировать новый пользователь через страницу регистрации, я получаю следующее сообщение об ошибке:Flask-security: обработка регистрации делает user.role_id не может быть ошибкой NULL

user.role_id may not be NULL 

модели (стандарт QuickStart): класса Роли (db.Model, RoleMixin): имени = CharField (уникальный = True) описание = TextField (нуль = True)

class User(db.Model, UserMixin): 
    email = TextField() 
    password = TextField() 
    active = BooleanField(default=True) 
    confirmed_at = DateTimeField(null=True) 

class UserRoles(db.Model): 
    # Because peewee does not come with built-in many-to-many 
    # relationships, we need this intermediary class to link 
    # user to roles. 
    user = ForeignKeyField(User, related_name='roles') 
    role = ForeignKeyField(Role, related_name='users') 
    name = property(lambda self: self.role.name) 
    description = property(lambda self: self.role.description) 

Я действительно не понимаю, где это происходит из. Во-первых, вам не нужно назначать роль новому пользователю, а во-вторых, поскольку «роль» является внешним ключом, правильным способом получить идентификатор роли пользователя будет user.role.id вместо user.role_id.

ответ

0

Похоже, что у вас, возможно, был внешний ключ role в одной точке вашего стола пользователя, но, возможно, вы его удалили? Возможно, вам придется изменить таблицу, чтобы удалить столбец, если вы больше не используете его.