Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/293.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python 按关系属性创建SQLAlchemy查询记录_Python_Flask_Sqlalchemy_Flask Sqlalchemy - Fatal编程技术网

Python 按关系属性创建SQLAlchemy查询记录

Python 按关系属性创建SQLAlchemy查询记录,python,flask,sqlalchemy,flask-sqlalchemy,Python,Flask,Sqlalchemy,Flask Sqlalchemy,在应用程序中,我一直在使用Flask用户及其建议的授权控制模型。下面是一个例子: 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.C

在应用程序中,我一直在使用Flask用户及其建议的授权控制模型。下面是一个例子:

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'))
此外,作为Flask User/Flask登录的一部分,
current_User
为我提供了一个与应用程序的当前用户(如果已登录)相对应的
User
对象,并且根据我们的模型中的定义,
current_User.roles
返回一个
Role
对象的列表,对应于通过
UserRoles
表绑定到当前用户的角色


现在,在某种程度上,我希望能够查询具有当前用户所具有的任何角色的所有用户。考虑到我们在SQL Alchemy中的
当前用户角色列表和我的模型,如何实现这一点?我如何选择其
用户的
任意
位置的所有用户。角色
与我们的任何
当前用户角色
匹配?

向角色添加
\u报告
,如下所示:

class Role(db.Model):

    #...

    def __repr__(self):

        return self.id
您可以使用以下查询来实现您的需求

User.query.filter(User.roles.any(Role.id.in_([role.id for role in current_user.roles]))).all()

\uuuu repr\uuuu
添加到角色,如下所示:

class Role(db.Model):

    #...

    def __repr__(self):

        return self.id
您可以使用以下查询来实现您的需求

User.query.filter(User.roles.any(Role.id.in_([role.id for role in current_user.roles]))).all()

谢谢我尝试了它,在查询
ArgumentError时出现了以下错误:对象1在
操作中作为SQL文本值
是不合法的。谢谢!我尝试了它,但在查询
ArgumentError时出现了以下错误:对象1作为SQL文本值在
in
操作中不合法。