flask-admin:如何根据当前用户控制数据列显示

新手上路,请多包涵

在开发过程中使用flask-admin遇到一个场景,即根据当前用户的信息判断然后显示不同的列。我尝试重写scaffold_list_columns,但在此方法中无法获取当前用户的信息。
下面是部分代码
本例使用了flask-login
from flask_admin.contrib.sqla import ModelView
class FeedbackView(ModelView):
def init(self, session, **kwargs):
def scaffold_list_columns(self):
if login.current_user.id == 1
return ('content')
return ('content', 'create_at')

请问大家没有遇到过这样的问题,如何解决的,多谢!

阅读 7.8k
4 个回答

就目前来说, flask-admin本身实现不了, 因为初始化之后, 很多东西就是固定的了

新手上路,请多包涵

看来只有想别的办法了,生成多个基于ModelView 的实例了

控制列显示在modelview定义的时候实现(重写变量column_list就行),但用户信息是在访问URL生成页面时才能读取到(login.current_user),用户信息要晚于控制列,似乎没有办法实现“根据用户信息来控制数据列”

看错标题了。这个目前知道的 flask-admin 重写models
加入角色判断
不能直接在函数前加入@admin_required。
而是在写一遍admin_required里面的方法。然后重写column_exclude_list删除某些行等。。这是我目前想到的唯一方案。但是并没有实际走坑,因为还不需要该功能。应该不容易实现

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进