2016-12-06 98 views
0

我使用Django作爲我的web-app的後端,django-haystack(with Solr)用於搜索&顯示結果。 我使用RealTimeSignalProccessor表格django-haystack,但我有一個問題:
- 我有一個Auction modelexpires-(DateTimeField)。當我顯示結果時,我會像電子海灣一樣進行類似的操作(例如:過期時間:1小時23分5秒)。
的問題是,所有的拍賣都顯示,如果要更新每次訪問這個視圖(如我的Django的草垛文檔中讀過的)時間Expires in參數頁面上,你將不得不使用用於更新Solr索引數據庫的object.save()方法。但是,如果我每次進入所有拍賣列出的視圖,都會得到30個結果,但速度非常慢,效率不高。
是否有任何其他的解決辦法?你有什麼建議?使用django-haystack優化顯示結果RealTimeSignalProcessor

+0

這背後爲什麼你要更新價值的過期的理由?這與那些過期時間大於utcnow()的值的DateTimeField asc排序不同嗎? – MatsLindh

+0

'Expires'總是比utcnow()時,關於更新 - 我需要表現留到拍賣finishesh的時間。例如:2d 4h 3m和刷新頁面(將其更改爲2d 4h 2m等)。正如我通過'django-haystack'文檔所說的那樣。你需要調用對象的save()方法來更新Solr的參數吧 – lcadc17

+0

是的,但「到期」的一部分並不真正需要的是你的數據庫的一部分。在您的模型或視圖中檢索它時計算它。更新每個頁面視圖的x行數將導致問題在後面。 – MatsLindh

回答

1

無需在數據庫中更新expires_in字段 - 保留expires_at的廣告到期時間,並計算您的模型或視圖中檢索方法的剩餘時間。

通過這種方式,您可以避免在流量增加時必須向數據庫寫入更多數據,並且如果到期日期發生更改,您將不會遇到可能的競爭狀況,如果人們在同一時間查看網頁正在更新到期時間。