Skip to main content
 首页 » 编程设计

python之如何在 django session 中存储查询集以进行分页

2024年11月01日27kevingrace

在 Django 1.6 中,我有一个模型存储在我的数据库中,我正在查询它以获得一些结果。然而,由于结果有时可能足以填满一个页面,我正在尝试严格按照这篇文章的框架实现分页系统:https://stackoverflow.com/a/18106904/178728 .

现在的问题是,在 request.session 中,我需要存储我的查询集,而不仅仅是简单的值。然而,这会产生各种问题,因为 Django 提示我的查询集不是 json 可序列化的。

到目前为止我已经尝试过:

1) request.session['data'] = myQueryset # Fails 
2) request.session['data'] = serializers.serialize('json', myQueryset)  
   # succeeds at first but fails in deserialization as 
   # I can't reassemble the original queryset  

无论如何,我的问题是:存储和检索查询集的最简单方法是什么?

请注意,当用户使用 POST 请求搜索数据库时,我需要存储查询集,然后通过 GET 检索结果以在分页器中使用。

提前致谢。

请您参考如下方法:

我刚刚找到了解决问题的方法:这正是我要找的:https://gist.github.com/bsnux/4672788

import pickle 
 
# Session key 
key = 'my_qs' 
 
# Pizza => model example 
qs = Pizza.objects.filter(ingredient='tomato') 
# Dumping data 
request.session[key] = pickle.dumps(qs.query) 
 
# Loading data 
pizzas = Pizza.objects.all()[:1] 
pizzas.query = pickle.loads(request.session[key]) 
 
# Using qs 
for pizza in pizzas: 
print(pizza.ingredient) 

希望这对将来的人有所帮助。干杯。