2012-05-12 7 views
0

나는이 모델을 가지고 : 여기 이 관계를 모델링하는 더 좋은 방법이 있습니까?

class Assignment(db.Model): 
    title = db.StringPeoperty(required=True) 
    ...other stuff... 

class TeamScore(db.Model): 
    assignment = db.ReferenceProperty(Assignment, 
             collection_name="teamScores", 
             required=True) 
    teamID = db.IntegerProperty(required = True) 
    score = db.IntegerProperty(required = True) 
    ...other stuff... 

가 peoblem입니다. 홈페이지에서 각 과제의 상위 3 개 (점수에 따라) 팀 작업을 보여 드리고자합니다. 그래서, 내 템플릿이 통과 :

assignments = Assignment.all() 

템플릿에서 :

{% for assignment in assignments%} 
    **<!--How to implement showing the top three-->** 
    {% for score in assignment.teamScores%} 
     {{score.teamID}} 
     {{score.score}} 
     ............... 
    {% endfor%} 
{%endfor%} 

을이 데이터 저장소 모델. 템플릿으로 정렬해야합니다. 불가능합니다. 그래서, 나는이 문제를 다루는 더 좋은 모델을 가지고 있다고 생각합니다. 그러나 나는 그것을 알아낼 수 없다. 필자는 ListProperty를 추가하여 상위 3 개를 저장하는 방법에 대해 생각했습니다. 새 TeamScore가 생성 될 때마다이를 목록의 점수와 비교하여 상위 3 개를 최신 상태로 유지합니다. 그러나 나는이 방법이 기교가 아니라고 생각한다.

의견을 보내 주시겠습니까?

감사합니다.

답변

1

이것은 데이터 모델링 문제가 아니라 템플릿 화 된 문제입니다. 할당 모델을 전달하고 템플릿에서 나머지 작업을 수행하는 대신 할당을 가져 와서 코드에서 점수 목록을 가져 오는 쿼리를 수행하고 결과를 템플릿에 전달해야합니다.

+0

감사합니다. Nick. 그러나 각 과제마다 TOP3이 필요한 많은 과제가 있습니다. 파이썬 파일에서 쿼리를 수행하면 모든 과제를 반복하고 모든 사용자의 TOP3을 찾아야한다는 의미입니다. 각 과제의 모든 TOP3를 하나의 점수 목록에 넣으라고 제안합니까? 할당 과제의 TOP3를 얻기 위해 'assignmentEntity.teamScores.order ('- score '). fetch (3)'사용자에게 문의하려고합니다. 주문이 작동하지 않습니다. 주문 기능은 참조 속성에서 사용자가 될 수 없습니다. – hakunami

+0

@stevenYANG 네,하지만 어디에서든 쿼리를 많이해야 할 것입니다. 두 번째 요소가 최고 점수 목록 인 (과제, 상위 3 개) 튜플 목록을 작성하는 것이 좋습니다. –

+0

죄송합니다. 예를 들어 refernece 속성을 주문할 수 있다는 것을 분명히하고 싶습니다. 마지막 코멘트에서 작성한 코드는 사용할 수 있습니까? – hakunami

관련 문제