所以我可以通过关系字段的值轻松选择,但我不能为我的生活找出如何根据关系数量选择和排序。具体来说,我想要做的是选择至少有一个帖子的所有用户,然后由帖子最多的用户订购。我想这样做,而不是在数据库中存储额外的字段作为帖子计数,或选择所有字段并手动排序。
像
这样的东西User.query.filter(len(User.posts.all()) > 0).all()
例如,是理想的,但这似乎不起作用。
有什么想法吗?
答案 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())