您好, 欢迎来到 !    登录 | 注册 | | 设为首页 | 收藏本站

Flask-Admin不同的表单和column_list用于不同的角色

Flask-Admin不同的表单和column_list用于不同的角色

我通常定义视图类属性,例如column_list属性。它允许你向其中添加一些动态逻辑:

from flask import has_app_context
from flask_security import current_user

class MyModelView(SafeModelView):
    @property
    def column_list(self):
        if has_app_context() and current_user.has_role('superuser'):
            return superuser_column_list
        return user_column_list

    @property
    def _list_columns(self):
        return self.get_list_columns()

    @_list_columns.setter
    def _list_columns(self, value):
        pass

使用这种方法的问题(以及为什么column_listis_accessible函数中重新分配值不起作用)是许多视图属性在应用程序启动时被缓存并存储在私有属性中。column_list例如,缓存在_list_columns属性中,因此你也需要重新定义它。你可以在flask_admin.model.base.BaseModelView._refresh_cache方法中查看此缓存的工作方式。

has_app_context这里需要Flask 方法,因为column_listcurrent_user变量还没有有意义的值时,第一次读取发生在应用程序启动时。

form_columns属性也可以这样做。这些属性将如下所示:

@property
def form_columns(self):
    if has_app_context() and current_user.has_role('superuser'):
        return superuser_form_columns
    return user_form_columns

@property
def _create_form_class(self):
    return self.get_create_form()

@_create_form_class.setter
def _create_form_class(self, value)
    pass

@property
def _edit_form_class(self):
    return self.get_edit_form()

@_edit_form_class.setter
def _edit_form_class(self, value):
    pass
Python 2022/1/1 18:22:15 有335人围观

撰写回答


你尚未登录,登录后可以

和开发者交流问题的细节

关注并接收问题和回答的更新提醒

参与内容的编辑和改进,让解决方法与时俱进

请先登录

推荐问题


联系我
置顶