2012-05-12 174 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。在主頁上,我想顯示每個作業的前三名(基於分數)團隊工作。所以,我通過這我的模板:

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來存儲前三名的想法。每次新的TeamScore生成時,我都會將其與列表中的分數進行比較,以保持前三名的新鮮度。但我認爲這種方式不是elengance。

你能給我一些建議嗎?

謝謝!

回答

1

這不是一個數據建模問題,它是一個模板化的問題。您需要獲取分配並執行查詢以獲取代碼中的分數列表,並將結果傳遞到模板中,而不僅僅傳遞分配模型並在模板中執行其餘工作。

+0

謝謝尼克。但是有很多作業,每次作業都需要TOP3。如果我在我的python文件中查詢,這意味着我需要迭代所有這些任務,並找到每個人的TOP3。你建議我把每個任務的所有TOP3都放到一個分數列表中?我嘗試使用'assignmentEntity.teamScores.order(' - score')。fetch(3)'獲得一個任務的TOP3,但似乎是訂單不起作用。訂單功能不能對用戶引用屬性,可以嗎? – hakunami

+0

@stevenYANG是的,但無論你在哪裏做,你都必須做很多的查詢。我建議構建一個(賦值,前三個)元組列表,其中第二個元素是最高分數列表。 –

+0

對不起,我只是想說清楚,YES意味着我可以訂購一個refernece屬性?我在上次評論中寫的代碼是否可用? – hakunami

相關問題