2011-10-31 2 views
1

ORM에 대해 Elixir를 사용하고 있지만 관계로 주문하려고하는 데 문제가 있습니다.OneToMany Elixir Relationship의 수에 의해 정렬

내가하려는 것은 보유하고있는 게시물의 개수로 정렬 된 사용자 목록을 얻는 것입니다. 나는 같은 시도를했습니다

User.query.join(User.posts).order_by(func.count(User.posts)).all() 

아무런 성공도없이.

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


class Post(Entity): 
    content = Field(Unicode(20000)) 
    user = ManyToOne('User') 

답변

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 
+0

감사합니다. 서브 쿼리는 실제로 제가 찾고있는 것입니다. –