在本地评估Django链式查询集

时间:2010-03-29 21:23:22

标签: django django-queryset

我希望有人可以帮我解决关于链接Django查询集的快速问题。我注意到减速因为我正在评估数据库中的许多数据点以创建数据趋势。我想知道是否有办法在本地评估链式过滤器而不是命中数据库。这是一个(原始)例子:

pastries = Bakery.objects.filter(productType='pastry') # <--- will obviously always hit DB, when evaluated
cannoli = pastries.filter(specificType='cannoli') # <--- can this be evaluated locally instead of hitting the DB when evaluated, as long as pastries was evaluated?

我已经检查了文档,我没有看到任何指定这个,所以我想这是不可能的,但我想首先检查'braintrust'; - )。

BTW - 我知道我可以通过实现一些方法循环遍历这些数据点并评估标准来自己做到这一点,但有很多数据点,我的截止日期不允许我手动实现这一点。

提前致谢。

1 个答案:

答案 0 :(得分:1)

QuerySet方法总是生成返回所需表达式的SQL。这就是你不能这样做的原因。切片后调用各种方法; SQL不支持该语法。 ORM只是汇集所说的SQL。如果你想要更好的处理,那么你需要自己用Python代码来执行它。