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

标签 python json django pagination django-queryset

在 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)

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

关于python - 如何在 django session 中存储查询集以进行分页,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23596433/

相关文章:

python - 使用 python、cherrypy 和 pyserial 进行线程化

Python 为图像添加一个 channel

Python - 从字典动态创建方程

java - 无法反序列化包含从 AMQP 消息传递收到的 LocalDate 的对象

django - 尝试结合 Django inline-formset、django-select2 和 django-dynamic-formset

python - 如何在 'with' 语句中包装静态类(来自 .NET)

javascript - 通过 AJAX 将多个 JSON 对象传递到 ASP.Net PageMethod

json - 如何使用 bash 或 jq 在 linux 中解析 Json 文件以设置结果

python - 没有身份验证的 Django 管理员

python - 描述符 'date' 需要一个 'datetime.datetime' 对象,但收到一个 'unicode'