私が取り組んでいるアプリケーションでは、Flask-Userとその推奨モデルを使用して認証を制御しています。 、またFlask-SQLAlchemy関係属性別のレコードを照会
class User(db.Model, UserMixin):
id = db.Column(db.Integer, primary_key=True)
# User Authentication information
username = db.Column(db.String(50), nullable=False, unique=True)
password = db.Column(db.String(255), nullable=False, default='')
# User Email information
email = db.Column(db.String(255), nullable=False, unique=True)
confirmed_at = db.Column(db.DateTime())
# User information
is_enabled = db.Column(db.Boolean(), nullable=False, default=False)
# Relationships
roles = db.relationship('Role', secondary='user_roles',
backref=db.backref('users', lazy='dynamic'))
class Role(db.Model):
id = db.Column(db.Integer(), primary_key=True)
name = db.Column(db.String(50), unique=True)
class UserRoles(db.Model):
id = db.Column(db.Integer(), primary_key=True)
user_id = db.Column(db.Integer(), db.ForeignKey('user.id', ondelete='CASCADE'))
role_id = db.Column(db.Integer(), db.ForeignKey('role.id', ondelete='CASCADE'))
フラスコユーザー/フラスコログインの一部として、current_user
は私に定義されるように、(ログインしている場合)と、アプリケーションの現在のユーザに対応User
オブジェクトを与える:ここで例です私たちのモデルcurrent_user.roles
は、UserRoles
テーブルによって現在のユーザにバインドされているロールに対応するRole
オブジェクトのリストを返します。
現在、ある時点で、現在のユーザーが持つ役割を持つすべてのユーザーにクエリを実行できるようにしたいと考えています。私たちのcurrent_user.roles
リストとSQL Alchemyの私のモデルをどうすれば達成できますか? User.roles
のany
がcurrent_user.roles
のいずれかと一致するすべてのユーザーを選択するにはどうすればよいですか?
class Role(db.Model):
#...
def __repr__(self):
return self.id
をそして、あなたはあなたの条件を達成するために、次のクエリを使用することができます。
ありがとうございます!私はそれを試して、クエリ 'ArgumentError:Object 1はSQLのリテラル値として合法ではありません.'の' in'演算で次のエラーを受け取りました。 –
@GabrielSiqueira最新の回答をお試しください。 – stamaimer
これは完全に機能します。ありがとう! –