我有用户表、角色表和项目表,它们看起来像这样:
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
这可能吗?我做错了什么?