在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检索结果,以便在分页器中使用。
提前致谢。
答案 0 :(得分:2)
我刚刚找到了解决问题的方法:这正是我所寻找的: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)
希望这可以帮助将来的某个人。欢呼声。
答案 1 :(得分:0)
尝试
myQueryset.values()
它应该返回JSON可序列化的查询集。