在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可序列化的查询集