Han*_* Li 3 django django-cache django-queryset django-sessions
我试图将在一个视图中获得的查询结果保存到会话中,并在另一个视图中检索它,所以我尝试了以下操作:
def default (request):
equipment_list = Equipment.objects.all()
request.session['export_querset'] = equipment_list
Run Code Online (Sandbox Code Playgroud)
但是,这给了我
TypeError at /calbase/
<QuerySet [<Equipment: A>, <Equipment: B>, <Equipment: C>]> is not JSON serializable
Run Code Online (Sandbox Code Playgroud)
我想知道这到底是什么意思,我应该怎么做?也许除了使用会话之外,还有其他方法可以做我想要的事情?
如果这是您要保存的内容:
equipment_list = Equipment.objects.all()
Run Code Online (Sandbox Code Playgroud)
您不应该或不需要使用会话。为什么?因为这是一个简单的查询,没有任何过滤。equipment_list对所有用户都是公用的。这可以很容易地保存在缓存中
from django.core.cache import cache
equipment_list = cache.get('equipment_list')
if not equipment_list:
equipment_list = Equipment.objects.all()
cache.set('equipment_list',equipment_list)
Run Code Online (Sandbox Code Playgroud)
请注意,查询集可以保存在缓存中,而不必先将其转换为值。
更新:
另一个答案之一提到查询集不可json序列化。仅当您尝试将其作为json响应传递时才适用。在尝试缓存它时不适用,因为django.core.cache不使用json序列化,而是使用酸洗。
| 归档时间: |
|
| 查看次数: |
2759 次 |
| 最近记录: |