2011-10-16 33 views
0

這裏被簡化數據存儲區結構的版本:如何按單獨模型中存儲的字段進行排序?

class News(db.Model): 
    title = db.StringProperty() 

class NewsRating(db.Model): 
    user = db.IntegerProperty() 
    rating = db.IntegerProperty() 
    news = db.ReferenceProperty(News) 

現在我需要顯示所有新聞由它們的總評分(不同用戶等級之和)排序。我怎樣才能做到這一點下面的代碼:

news = News.all() 
# filter by additional parms 
# news.filter("city =", "1") 
news.order("-added") # ? 
for one_news in news: 
    self.response.out.write(one_news.title()+'<br>') 

回答

1

查詢只能訪問要查詢針對實體,如果您有(基於其他實體領域或者某些累計計算)從另一實體的屬性你想用來排序結果,你需要將它存儲在你正在查詢的實體中。

對於收視率,這可能意味着一個週期性的任務,總結收視率並將其分發到文章。

+0

因此,我應該爲每個新聞實體添加新的房產評級,對吧?如果我希望在每次添加到NewsRating的新記錄時更新它,我如何確保每次投票都被計算在內(即當我讀寫另一個交易時沒有寫交易)? –

+0

Dave,看起來像我的場景中沒有太多的用戶Sharding櫃檯(我不希望每個新聞每秒超過5票)。所以,我可以按照我上面評論中描述的方法。我對嗎? –

1

要做到這一點,你需要運行一個查詢獲取每一個NewsRating引用您的News實體,總結所有的評級(如數據存儲不提供連接)。這在時間和成本方面都將是一項艱鉅的任務。我建議以just-overheard-it爲例作爲參考點。

相關問題