2012-02-02 9 views
0

エリクサーを使用し、投票者と候補者という2つのエンティティを持ちます。それらの間に多数のものがあります(多くの候補者には重要な場合投票ができます)。有権者の数でソートされた候補者のリストを取得したい。このようエリクサーの宣言を使用してそれを行うにはどのような方法があります:?エリクサーとの多対多の関係の数による注文方法は?

class Voter(Entity): 
    votes = ManyToMany('Candidate') 

class Candidate(Entity): 
    voters = ManyToOne('Voter') 

私はSQLAlchemy ordering by count on a many to many relationshipを読むが、エリクサーと明確な方法でそれをしたいました。私は、可能であることを願っています。

答えて

1

エリクサーで多対多の関係で注文することができることがわかったのは、関係から二次テーブルを外して「普通の錬金術のように」することです。おおよそこのようなもの:

secondr_table = Candidate._descriptor.find_relationship('voters').secondary_table 
cands_by_rank = (
    session.query(
     Candidate.id, 
     func.count(secondr_table.c.candidate_id).label('total') 
    ) 
    .join(secondr_table) 
    .group_by(Candidate) 
    .order_by('total DESC') 
関連する問題