1
これはflask-admin exampleに基づいています。フラスコ - sqlalchemy:どのように自分の役割のIDに応じてユーザーを選択する選択可能なボタンを作るには?
すべてのユーザーではなく、ロールIDに基づいてデータベース内のユーザーを選択するための選択可能なドロップボタンを作成します。例えば
:スーパーユーザ(ロールID = 2)を言って、どのように私は、ユーザーのみが(私の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*
役割テーブル:
ロール - ユーザテーブル:
:
詳細については、SQLAlchemyのドキュメントを参照してください.join(User.roles).filter(Role.id == 123).all() 'ここのクラスプロジェクトでは? 'sqlalchemy.exc.InvalidRequestError:マッパーMapper | User |ユーザーを初期化する際、式 'Project'が名前を見つけられませんでした(" name 'Project'が定義されていません)。 – Samoth
コードスニペットは、クエリの作成方法を示しています。どのようにそれらを使用するかはあなた次第です。エラーをデバッグするのに役立つ場合は、[MCVE](https://stackoverflow.com/help/mcve)を作成し、新しい質問を投稿する必要があります。 – augurar
@ augurar:あなたの優しい答えをありがとう、 'Role.id == 123'と' Team.id == current_user.team_id'でユーザに質問したいのですが? – Samoth