如何在SQLAlchemy中根据它拥有的关系数选择模型,然后按相同的数字排序?

时间:2017-04-22 23:42:46

标签: python sqlalchemy flask-sqlalchemy

所以我可以通过关系字段的值轻松选择,但我不能为我的生活找出如何根据关系数量选择和排序。具体来说,我想要做的是选择至少有一个帖子的所有用户,然后由帖子最多的用户订购。我想这样做,而不是在数据库中存储额外的字段作为帖子计数,或选择所有字段并手动排序。

这样的东西
User.query.filter(len(User.posts.all()) > 0).all()
例如,

是理想的,但这似乎不起作用。

有什么想法吗?

1 个答案:

答案 0 :(得分:0)

使用having()

from sqlalchemy import func

session.query(User).\
        join(User.posts).\
        group_by(User).\
        having(func.count(Post.id) > 0).\
        order_by(func.count(Post.id).desc())