Django:迭代没有缓存的查询集

时间:2009-09-18 08:40:47

标签: python django caching

我有一个愚蠢的简单循环

for alias in models.Alias.objects.all() :
    alias.update_points()

但是查看django QuerySet似乎保留了之前所有结果的_result_cache。这是吃我的机器的演出和演出,最终一切都爆炸了。

我怎么能扔掉所有我不会关心的东西?

2 个答案:

答案 0 :(得分:11)

使用queryset的iterator()方法以块的形式返回模型,而不填充结果缓存:

for alias in models.Alias.objects.iterator() :
    alias.update_points()

答案 1 :(得分:0)

您应该考虑将更改保存回数据库。

for alias in models.Alias.objects.all() :
    alias.update_points()
    alias.save()