Python 在会话变量中存储queryset
我正在使用django并试图将queryset存储在会话变量中Python 在会话变量中存储queryset,python,django,web,Python,Django,Web,我正在使用django并试图将queryset存储在会话变量中 def wholelist(request): hotelvar=request.POST.get('service_type') city_list=Hotels.objects.filter(city_name__iexact=request.POST.get('searchabc')) if not city_list: hotel_list=Hotels.objects.all()
def wholelist(request):
hotelvar=request.POST.get('service_type')
city_list=Hotels.objects.filter(city_name__iexact=request.POST.get('searchabc'))
if not city_list:
hotel_list=Hotels.objects.all()
context={'hotel_list':hotel_list}
return render(request, 'polls/homepage.html',context)
pricemin=200
pricemax=800
request.session['hlist']=city_list
我得到以下错误:
[酒店:ashoka,酒店:abc]不可JSON序列化
我试图转换成列表,然后存储它
request.session['hlist']=list(city_list)
我得到以下错误:
“QuerySet”对象没有属性“POST”
这是酒店的模型结构
class Hotels(models.Model):
def __str__(self):
return self.hotel_name
hotel_name=models.CharField(max_length=200)
photo=models.ImageField()
city_name=models.CharField(max_length=200)
有没有办法在会话变量中存储queryset?您不能在Django会话中直接保存queryset,您需要先序列化它,然后才能在会话中保存它 让我知道它是否与你合作 为非JSON可序列化错误干杯,您可以使用django序列化程序序列化模型,如下所示:
from django.core import serializers
hotel_list=Hotels.objects.all()
json_hotel = serializers.serialize('json', hotel_list)
context={'hotel_list':json_hotel}
我对您的问题的理解是,您希望将查询集中返回的所有值存储在请求的会话变量中 但是您不能这样做,因为这些查询集只不过是对对象的引用 因为如果你想存储这些值,你能做的就是
import json
def wholelist(request):
hotelvar=request.POST.get('service_type')
city_list=Hotels.objects.filter(city_name__iexact=request.POST.get('searchabc'))
if not city_list:
hotel_list=Hotels.objects.all()
context={'hotel_list':hotel_list}
return render(request, 'polls/homepage.html',context)
pricemin=200
pricemax=800
city_list2 = []
city_list_for_session = city_list.values()#this will store the values of querylist to the session
for item in city_list_for_session:
data = {
'hotel':item['hotel'],
'city_name':item['city_name']}
city_list2.append(data)
request.session['hlist']=city_list2
values函数将为您提供一个所有项目的列表,其中包含字典中每列的值
因此,基本上您将得到一个包含queryset值的字典列表
希望有帮助。代码本身不会给出错误。请显示视图的其余部分(正确缩进)和完整的traceback.city_list_for_session=json.dumpscity_list.values这会产生以下错误:[]不是json序列化的你可以发布模型酒店的模型结构吗?在原始问题中添加了它你的ImageField不是json序列化的。因此,您将无法存储图像。另外,我不建议您存储从过滤器获得的所有图像。相反,您可以做的不是将ImageField放入序列化数据中。谢谢您的帮助