按时间值切片结果列表

时间:2010-10-20 23:25:41

标签: python google-app-engine

我有一个结果列表,并希望保留比时间线更新且比书签更旧的元素。有没有比迭代整个列表更方便的方法,如果它们符合条件,则删除元素?你能告诉我具体怎么样吗?我获取数据然后对其进行排序的方式

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)

我希望你明白我要做的事情(就像分页一样),并提前感谢你的任何想法。

2 个答案:

答案 0 :(得分:1)

如果您正在使用SearchableModel并执行搜索查询(从代码片段看起来就是这样),则无法应用排序顺序或不等式过滤器,而无需使用爆炸索引,如前一个问题中所述话题。因此,您无法将这些过滤器作为查询的一部分应用 - 因此手动过滤结果是最佳(也是唯一)选项。

答案 1 :(得分:0)

此?

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)