2012-02-01 5 views
0

우리는 엔티티 노드가 있습니다Elixir 또는 SQLAlchemy에서 다 대일 관계에 대해 사용자 지정 가능한 "순서"를 만드는 방법은 무엇입니까?

class Node(Entity): 
    parent = ManyToOne('Node') 
    children = OneToMany('Node') 

우리는 다음과 같이 조회 :

nodes = (
    Node.query 
    .options(
     eagerload(Node.children), 
    ) 
    .order_by(desc(Node.id)) 
    .all() 
) 

fathers = [n for n in nodes if n.parent == None] 

우리는 꽤 주문 얻을 아버지, 자녀와 달리. (아버지 [0]. 자식은 노드의 정렬되지 않은 목록을 반환합니다)

이 문제의 거의 완벽한 해결책은 노드의 "children"필드에 "order_by"매개 변수를 추가하는 것입니다. 이런 식으로 뭔가 :

class Node(Entity): 
    parent = ManyToOne('Node') 
    children = OneToMany('Node', order_by='-id') 

그리고 지금 우리의 아이들이 정렬 모든 것을 잘하지만 ... 우리가 정렬 기준을 변경하려면? 때때로 우리는 "이드"로 분류하고 싶을 때가 있습니다. 때로는 아이들이나 다른 것의 양으로 분류되기도합니다. 이제 우리의 이전 솔루션은 그리 좋아 보이지 않습니다.

어떻게이 문제를 해결할 수 있습니까?

답변

0

이 엘릭서 구문이 무엇인지 모르겠지만 여기서는 SQLAlchemy를 사용하여 순전히 할 것입니다. 기본 메서드가 아닌 자식을 호출하는 함수를 만들 수 있습니다.

+0

Thx. 나는 더 나은 것을 찾지 못했습니다. – Andrew