Листать результат формуляра POST в Джанго

Хорошие, я занимаю достаточно времени ища оптимальное решение, чтобы листать список машин, оказанный из поисков через формуляр POST.

Я нашел решение добавляя этот список машин в request.session, но это решение неэффективное и очень медленное, медлит 5-8 секунд с тем, чтобы сохранять список в session, так как есть 80.000 машин в базе данных.

Мой view.py

def buscar_coche_avanzado(request):
if request.method == 'POST':
    coches = []
    form = BuscaAvanzadaCocheForm(request.POST)
    if form.is_valid():
        marca = form.cleaned_data['marca']
        precioDesde = form.cleaned_data['precioDesde']
        precioHasta = form.cleaned_data['precioHasta']
        kmsDesde = form.cleaned_data['kmsDesde']
        kmsHasta = form.cleaned_data['kmsHasta']
        anioDesde = form.cleaned_data['anioDesde']
        anioHasta = form.cleaned_data['anioHasta']
        combustible = form.cleaned_data['combustible']
        publicista = form.cleaned_data['publicista']
        provincia =form.cleaned_data['provincia']
        cambio = form.cleaned_data['cambio']
        modelo = form.cleaned_data['modelo']
        marca = form.cleaned_data['marca']

        q=[]
        if marca:
            q.append(Q(marca=marca))
        if precioDesde and not precioHasta:
            q.append(Q(precio__gte=precioDesde))
        if precioHasta and not precioDesde:
            q.append(Q(precio__lte=precioHasta))
        if precioDesde and precioHasta:
            q.append(Q(precio__range=[precioDesde,precioHasta]))
        if kmsDesde and not kmsHasta:
            q.append(Q(kms__gte=kmsDesde))
        if kmsHasta and not kmsDesde:
            q.append(Q(kms__lte=kmsHasta))
        if kmsHasta and kmsDesde:     
            q.append(Q(kms__range=[kmsDesde,kmsHasta]))   
        if anioDesde and not anioHasta:
            q.append(Q(anio__gte=anioDesde))
        if anioHasta and not anioDesde:
            q.append(Q(anio__lte=anioHasta))
        if anioHasta and anioDesde: 
            q.append(Q(anio__range=[anioHasta,anioDesde]))
        if combustible:
            q.append(Q(tipo_combustible=combustible))
        if publicista:
            q.append(Q(tipo_publicista=publicista))
        if provincia: 
            q.append(Q(provincia=provincia))
        if cambio:
            q.append(Q(tipo_cambio=cambio))
        if modelo:
            q.append(Q(modelo__icontains=modelo))

        q_objects = Q() 
        for t in q:
            q_objects &= Q(t) 

        coches = Coche.objects.filter(q_objects) 

        paginator = Paginator(coches, 21) 
        page = request.GET.get('page')

        try:
            coches = paginator.page(page)
        except PageNotAnInteger:
            # Si la página no es un integer devuelve la primera página
            coches = paginator.page(1)
        except EmptyPage:
            # Si la página está fuera de rango devuelve la última página
            coches = paginator.page(paginator.num_pages)  

        return render(request,'lista_coches.html', {'coches':coches, 'BuscaAvanzadaCocheForm':BuscaAvanzadaCocheForm(),'marcas':Marca.objects.all(), 'BuscaCocheForm':BuscaCocheForm()})     

return redirect('lista_coches.html')    

Как он мог бы листать список машины? В шаблоне, когда я даю ему в следующий, очевидно он не листает, потому что он не входит из-за if request.method == 'POST': и чтобы листать, я нуждаюсь в результате поисков.

0
задан 31.12.2016, 15:30
0 ответов