2017-01-18 4 views
0

ich django bin mit und versuchen, die queryset in Session-Variablen zu speichernSpeicherung queryset in Session-Variablen

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 

ich die folgende Störung erhalte: [Hotels: ashoka, Hotels: abc] ist nicht JSON serializable

ich in die Liste zu konvertieren versucht und es dann

request.session['hlist']=list(city_list) 

speichere ich die folgende Störung erhalte: ‚QuerySet‘ Objekt hat keine ein ttribute 'POST'

Dies ist die Modellstruktur des Hotels

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) 

Gibt es eine Möglichkeit in Session-Variablen zu speichern queryset?

+1

Dieser Code selbst gibt den Fehler nicht. Bitte zeigen Sie den Rest der Ansicht - richtig eingerückt - und die * vollständige * Traceback. –

Antwort

-1

Sie nicht QuerySet direkt in Django Sitzung speichern können, müssen u es serialisiert zuerst, dann können Sie es in der Sitzung speichern.

Lassen Sie mich wissen, ob es mit Ihnen Prost Arbeits

+0

danke. Das –

+0

arbeitete @ShubhamYelekar Ihre willkommen –

0

Für is not JSON serializable Fehler Sie Ihre Modelle mit django serialisiert werden kann serializers wie folgt:

from django.core import serializers 

hotel_list=Hotels.objects.all() 
json_hotel = serializers.serialize('json', hotel_list) 
context={'hotel_list':json_hotel} 
0

Was ich Ihr Problem ist, bin zu verstehen, dass Sie möchten, Speichern aller Werte, die in einem Abfrage-Set zurückgegeben werden, um in der Sitzungsvariablen der Anforderung gespeichert zu werden.

Aber man kann das nicht tun, da diese querysets nichts sein, aber der Verweis auf die Objekte.

Denn wenn Sie die Werte speichern möchten, was Sie tun können, ist

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 

Die Funktion .values() finden Sie eine Liste aller Elemente mit dem Wert jeder Spalte in einem Wörterbuch bekommen.

Also im Grunde, was Sie sein wird, ist immer eine Liste von Wörterbuch mit den Werten von queryset.

Ich hoffe, es hilft.

+0

city_list_for_session = json.dumps (city_list.values ​​()) sind dies die folgenden Fehler geben: [] ist nicht JSON serializable –

+0

Können Sie die Modellstruktur für das Modell Hotel Post. –

+0

hinzugefügt in der ursprünglichen Frage –