2010-10-20 44 views
1

我得到了一個結果列表並希望保留比時間軸更新且比書籤更早的元素。有沒有比迭代整個列表更方便的方法,並刪除元素,如果他們符合條件?你能介紹我如何特別如何?我獲取數據,然後的方式對其進行排序按時間值對結果列表進行切片

results = A.all().search(self.request.get('q')).filter("published =", True) 
results = sorted(results, key=lambda x: x.modified, reverse=True) 

然後我想保持比書籤年長,比時間表更新的元素,其中這些變量是由HTTP GET或者空白定義爲

bookmark = datetime.now() 
timeline = datetime.now() - timedelta (days = 50) 

我定義希望你明白我想要做什麼(就像分頁),並提前感謝你的任何想法。

回答

1

如果您正在使用SearchableModel,做一個搜索查詢(它會出現在你的,從片斷),你不能無需爆炸索引應用排序順序或不等式過濾器,成立於你關於這個話題的前一個問題。因此,您無法將這些過濾器作爲查詢的一部分應用 - 因此手動過濾結果是您的最佳(也是唯一)選項。

0

This?

bookmark = datetime.now() 
timeline = datetime.now() - timedelta (days = 50) 


results = A.all().search(self.request.get('q')).filter("published =", True) 
results = results.filter(modified__gte=bookmark).filter(modified__lte=timeline) 
results = sorted(results, key=lambda x: x.modified, reverse=True) 

或那樣嗎?

bookmark = datetime.now() 
timeline = datetime.now() - timedelta (days = 50) 

results = A.all().search(self.request.get('q')).filter("published =", True) 
results = [ r for r in results if r.modified >= bookmark and r.modified <= timeLine ] 
results = sorted(results, key=lambda x: x.modified, reverse=True) 
+0

它看起來應該在開發服務器上工作,但它引發了我的TypeError:filter()得到了一個意外的關鍵字參數'modified__gte'。我怎麼能繼續? – 2010-10-21 00:04:40

+0

他沒有使用Django。這就是爲什麼你的例子不起作用。 – 2010-10-21 08:12:05

+0

它使用lambda或上面的條件for語句。謝謝 – 2010-10-23 23:57:47

相關問題