我有一个视图,我在其中查询数据库然后我将查询集提供给会话并在其他视图中使用它。它在大多数情况下工作正常,但在极少数情况下,当查询集变得非常大时,需要很长时间才会出现超时。我想知道的是,我做的是正确的吗?如果没有,这个案例的最佳做法是什么?我有什么选择?
答案 0 :(得分:1)
我从不在会话中存储QuerySet数据。你只需要制作一个你需要的所有id的列表(如[1,2,3,4,5]),然后发送它。
下一步是从id列表中获取QuerySet:
data_list = request.session['data_list']
services = Service.objects.filter(id__in=data_list)
现在你拥有了之前的QuerySet,但会话永远不会被填充。