假设我在sqlalchemy中有3个表.用户,角色和UserRoles以声明方式定义.如何建议做这样的事情:
user = Users.query.get(1) # get user with id = 1
user_roles = user.roles.query.limit(10).all()
Run Code Online (Sandbox Code Playgroud)
目前,如果我想获取用户角色,我必须查询3个表中的任何一个并执行连接以获得预期结果.直接调用user.roles
会带来一些我无法过滤或限制的项目列表,因此它不是很有帮助.加入的东西也不是很有帮助,因为我正在尝试使用以下请求创建一个休息接口:
localhost/users/1/roles
所以只需要通过该查询我就能够做到Users.query.get(1).roles.limit(10) etc etc
这一点真的应该"智能化"我的休息界面而不需要太多膨胀的代码和if条件,而不必知道哪个表加入什么.用户模型已经具有作为关系属性的角色,那么为什么我不能简单地查询关系属性,就像我使用普通模型一样?
van*_*van 11
只需使用动态关系加载器.以下代码从上面链接的文档中逐字编写:
class User(Base):
__tablename__ = 'user'
posts = relationship(Post, lazy="dynamic")
jack = session.query(User).get(id)
# filter Jack's blog posts
posts = jack.posts.filter(Post.headline=='this is a post')
# apply array slices
posts = jack.posts[5:20]
Run Code Online (Sandbox Code Playgroud)
归档时间: |
|
查看次数: |
5863 次 |
最近记录: |