Django:无缓存遍历查询集

5 投票
2 回答
4925 浏览
提问于 2025-04-15 14:24

我有一个非常简单的循环

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

但是在查看Django的查询集时,我发现它似乎会保留一个叫做_result_cache的东西,里面存着之前所有的结果。这占用了我电脑上很多很多的内存,最后导致一切都崩溃了。

我该怎么做才能扔掉那些我根本不需要的东西呢?

2 个回答

0

你应该考虑把你的更改保存回数据库里。

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

使用查询集的 iterator() 方法,可以将模型分块返回,而不会占用结果缓存:

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

撰写回答