Flask-Admin can_create =仅对给定用户为True

时间:2013-06-16 20:53:47

标签: flask flask-login flask-admin

我将Flask-Admin与Flask-Login和mongoengine结合使用。

我希望根据用户自定义视图。此后,使用can_create的示例,允许模型创建。


class MyModelView(ModelView):
    column_exclude_list = ['password']
    def is_accessible(self):
        if (login.current_user.login != 'admin'):
            can_create=False
        return login.current_user.is_authenticated()

这样的代码无效:所有用户仍然可以创建,管理员和非管理员用户之间没有区别。

非常感谢任何关于如何仅允许给定用户创建模型的提示。

1 个答案:

答案 0 :(得分:8)

看起来您刚刚创建了局部变量can_create,因此您可以尝试self.can_create = False。但是flask-admin创建了View的一个实例,这可能是并发问题。然而,更好的单独逻辑用于检查可访问性和更改视图状态。所以最好使用下一个代码:

class MyModelView(ModelView):
    column_exclude_list = ['password']

    def is_accessible(self):
        return login.current_user.is_authenticated()

    @property
    def can_create(self):
        return login.current_user.login == 'admin'