如何在django会话中存储一个查询集用于分页



在Django 1.6中,我有一个模型存储在我的数据库中,我正在查询,以便获得一些结果。然而,由于结果有时可能足够填满一个页面,因此我试图按照本文的框架狭窄地实现分页系统:https://stackoverflow.com/a/18106904/178728.

现在的问题是,在request.session我需要存储我的查询集,而不仅仅是普通的值。然而,这会产生各种各样的问题,因为Django抱怨我的queryset不是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)

希望这对将来的人有所帮助。欢呼。

Try

myQueryset.values()

它应该返回json可序列化的查询集

相关内容

  • 没有找到相关文章

最新更新