缓存查询

2024-04-20 07:34:22 发布

您现在位置:Python中文网/ 问答频道 /正文

我正在开发一个需要过滤大量记录的应用程序。我一直在读缓存QuerySets和相关的东西,发现了一些好的材料。在

qs = MyModel.objects.filter(Q(<initial_filter_to_narrow_down_size>))

在这之后,我希望将这个qs放入缓存以备以后使用。我想在不影响数据库的情况下应用所有其他过滤器。有点像

^{pr2}$

但是当我做qs = qs.filter(q_object)时会发生什么呢?缓存将被修改?我不想那样。我希望qs在更新之前保持不变。在这种情况下我该怎么办?在


Tags: to数据库应用程序sizeobjects记录情况filter
2条回答

我从您的问题中了解到,您只需要从缓存中获取查询集,如下所示。在

your_cached_qs = cache.get('qs')

然后,应用你想要的任何过滤器。在

^{pr2}$

这不会影响缓存中的查询集。因此,您的缓存将保持不变,直到您再次自己更新它并获得所需的结果。在

.filter()在应用筛选器之前克隆查询集。缓存不会受到影响。在

顺便说一句,你可能想检查一下JohnnyCache。。。一个关于queryset缓存的很棒的应用程序。在

相关问题 更多 >