按照OneToMany Elixir关系计数

Vic*_*Neo 1 python sqlalchemy python-elixir

我正在使用Elixir进行ORM,但我尝试按关系排序时遇到问题.

我想要做的是获得一个用户列表,按用户的帖子数排序.我试过像这样的方法

User.query.join(User.posts).order_by(func.count(User.posts)).all()
Run Code Online (Sandbox Code Playgroud)

没有任何成功.

这是我的Elixir实体:

class User(Entity):
    username = Field(Unicode(100))
    posts = OneToMany('Post', inverse='user')


class Post(Entity):
    content = Field(Unicode(20000))
    user = ManyToOne('User')
Run Code Online (Sandbox Code Playgroud)

zzz*_*eek 5

这是一个常见问题,示例查询位于ORM教程中:http://www.sqlalchemy.org/docs/orm/tutorial.html#using-subqueries.只需更改order_by(User.id)所说的order_by(stmt.c.address_count):

>>> from sqlalchemy.sql import func
>>> stmt = session.query(Address.user_id, func.count('*').\
...         label('address_count')).\
...         group_by(Address.user_id).subquery()

>>> for u, count in session.query(User, stmt.c.address_count).\
...     outerjoin(stmt, User.id==stmt.c.user_id).order_by(stmt.c.address_count): 
...     print u, count
Run Code Online (Sandbox Code Playgroud)