2012-02-02 3 views
0

엘릭서를 사용하고 투표자와 후보자라는 두 개의 실체가 있습니다. 이들 사이에 수 많은 것이 있습니다 (중요하면 많은 후보자에게 투표 할 수 있습니다). 후보자 목록을 유권자별로 분류하고 싶습니다. 이러한 비약의 선언? 나는 SQLAlchemy ordering by count on a many to many relationship을 읽을 수는 있지만 비약과 명확한 방법으로 그것을 수행 할 것엘 릭셔와의 관계를 여러 대 다수로 계산하는 방법은?

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

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

를 사용하여 할 수있는 방법이 있습니까. 가능하면 좋겠네.

답변

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')