flask-sqlalchemy:如何根据用户的角色 ID 为 select 用户制作一个 select 可用按钮?

flask-sqlalchemy: how to make a selectable button to select the users according to his role id?

这是基于flask-admin example

我想根据角色 ID 而不是所有用户,为数据库中的 select 用户构建 select 下拉按钮。

例如:说 superusers(role id=2),我怎样才能制作一个 select 仅限制用户 的可用按钮超级用户 可以被 select 编辑(在我的 class Project 中)?

roles_users = db.Table(
   'roles_users',
   db.Column('user_id', db.Integer(), db.ForeignKey('user.id')),
   db.Column('role_id', db.Integer(), db.ForeignKey('role.id'))
)


class Role(db.Model, RoleMixin):
     id = db.Column(db.Integer(), primary_key=True)
     name = db.Column(db.String(80), unique=True)

     def __str__(self):
        return self.name

class User(db.Model, UserMixin):
     id = db.Column(db.Integer, primary_key=True)
     roles = db.relationship('Role', secondary=roles_users,
                         backref=db.backref('users', lazy='dynamic'))
     email = db.Column(db.String(255), unique=True)

     def __str__(self):
         return self.email

class Project(db.Model):
      *some code here make the selectable button to select users that are superusers*

角色table:

角色用户table:

您的 User 模型定义了与 Role 模型的多对多关系。您可以使用此关系按角色 ID 查询用户。

users = User.query.join(User.roles).filter(Role.id == 123).all()

或者,您可以先查询 Role,然后使用 users 属性访问该角色的用户。

role = Role.query.get(123)
users = role.users

有关详细信息,请参阅 SQLAlchemy 文档: