flask-admin:如何根据个人用户而不是角色自定义视图?

flask-admin: how to customize the view according to the individual user instead of the role?

众所周知,flask-admin 允许具有相同角色的用户具有相同的权限。但是,在我的应用程序中,我只想限制创建查询的用户查看和编辑。

例如,有很多用户具有相同的角色,称为"developers",he/she创建代码审查并等待批准。

下图显示开发人员 Gina 可以在列表中看到开发人员 Bill 的项目(这是不需要的)。我想要实现的只有 Gina 和审阅者(WeskerSteve 在这里)可以在列表中查看该项目。

我把代码放上了here ,如果不合适我会删除 link。提前致谢。

您必须创建另一个用户角色才能实现您的目标。它将帮助您节省时间,并且您可以轻松地专门为特定的个人或组自定义视图。

请完成这个link

根据您提供的信息,解决方案可能如下所示

  1. Rewrite/extend 收集 Project 条记录的逻辑,因此只有 属于当前用户 的记录。演示的示例可能如下所示:

    伪sql

    SELECT team, name, project_name, version, ... FROM projects where name = current_user.name

  2. Rewrite/extend 负责保存记录的逻辑,以便验证 current_user 是否允许对 进行更改给定的项目记录

覆盖 ModelView,您可以过滤结果以显示记录的用户自己的结果:

def get_query(self):
  return self.session.query(self.model).filter(self.model.user==current_user)

def get_count_query(self):
  return self.session.query(func.count('*')).filter(self.model.user==current_user)

您可以在此处找到更多信息: Flask-Admin default filters