SQLAlchemy 对多个表的多对多关系访问

问题描述 投票:0回答:0

我有用户表、角色表和项目表,它们看起来像这样:

Project(id: int, name: str, access_roles: list[Role])
Role(id: int, name: str)
User(id: int, name: str, roles: list[Role])

我需要获取具有用户所具有的任何角色的所有项目。

# user is given
projects = []
all_projects = Project.query.all()
for project in all_projects:
    if any(role in project.access_roles for role in user.roles):
        projects.append(project)
return projects

如何在不遍历所有项目的情况下获得项目?

我试过了,但是出错了。

return Project.query.where(Project.access_roles.in_(user.roles)).all()
# NotImplementedError: in_() not yet supported for relationships

这可能吗?我做错了什么?

python flask sqlalchemy flask-sqlalchemy
© www.soinside.com 2019 - 2024. All rights reserved.