我有一个结果列表,并希望保留比时间线更新且比书签更旧的元素。有没有比迭代整个列表更方便的方法,如果它们符合条件,则删除元素?你能告诉我具体怎么样吗?我获取数据然后对其进行排序的方式
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)
我希望你明白我要做的事情(就像分页一样),并提前感谢你的任何想法。
答案 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)