假设我在SQLAlchemy中有3个表:用户、角色和用户角色,以声明方式定义。如何实现以下操作?
user = Users.query.get(1) # get user with id = 1
user_roles = user.roles.query.limit(10).all()
目前,如果我想获取用户角色,我必须查询任意3个表,并执行联接以获得预期的结果。直接调用user.roles
会带来一系列无法过滤或限制的项目列表,因此这并不是很有帮助。连接是没有什么帮助的,因为我正在尝试创建具有以下请求的rest接口:
localhost/users/1/roles
,所以仅通过该查询,我需要能够执行Users.query.get(1).roles.limit(10)等等
,这应该可以使我的rest接口变得更加智能化,而不需要过多的膨胀代码和条件语句,也不需要知道要在哪个表上进行联接。Users模型已经将角色作为关系属性,为什么不能像使用普通模型那样查询关系属性呢?