在我的 AppEngine 项目中,我需要使用某个过滤器作为基础,然后将各种不同的额外过滤器应用到最后,分别检索不同的结果集。例如:
base_query = MyModel.all().filter('mainfilter', 123)
然后我需要分别使用各个子查询的结果:
subquery1 = basequery.filter('subfilter1', 'xyz')
#Do something with subquery1 results here
subquery2 = basequery.filter('subfilter2', 'abc')
#Do something with subquery2 results here
不幸的是,“filter()”会影响基本查询查询实例的状态,而不仅仅是返回修改后的版本。有什么方法可以复制查询对象并将其用作基础吗?是否有一种标准的 Python 方法来欺骗可以使用的对象?
额外的过滤器实际上是在向导中动态应用不同表单的结果,并且它们使用分支中查询的“运行总计”来评估是否要提出进一步的问题。
显然,我可以传递基本的过滤条件堆栈,但如果可能的话,我宁愿使用查询本身,因为它为解决方案增添了简单性和优雅性。
最佳答案
没有正式批准的(例如,不太可能破坏)方法来做到这一点。当您需要时,只需根据参数重新创建查询就是最佳选择。
关于python - 复制 AppEngine 查询对象以创建过滤器的变体,而不影响基本查询,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2793734/