Ver Mensaje Individual
  #1 (permalink)  
Antiguo 12/01/2016, 16:24
eibi76
 
Fecha de Ingreso: enero-2016
Mensajes: 3
Antigüedad: 8 años, 3 meses
Puntos: 0
Pregunta Problemas con queryset y paginacion

Hola a todos. Estoy desarrollando un proyecto personal con django y es mi primer app con este fremework.
La aplicacion tiene varios modelos y formularios de busqueda. Con los campos de busqueda en los que simplemente uso un campo no tengo problemas, mi problema esta en un formulario que he creado para hacer una busqueda mas precisa en los que filtro campo por campo en un rango de fechas determinado.Cuando lo relleno y le doy a buscar me devuelve la consulta perfectamente como yo quiero pero cuando le doy a pagina siguiente es cuando tengo el problema. Si la busqueda en la barra de direcciones es por ejemplo:

http://127.0.0.1:8000/buscar/?q1=lomas&q2=Averia&q3=154&q4=&fecha_inicial=2016-01-01&fecha_final=2016-01-31

Ahora la pagina 2 seria:

http://127.0.0.1:8000/buscar/?pagina2=q1=lomas&q2=Averia&q3=154&q4=&fecha_inici al=2016-01-01&fecha_final=2016-01-31

Y se me queda asi:

http://127.0.0.1:8000/buscar/?pagina2

Ya no me incluye la busqueda y no puede visualizar el resto de paginas. En el formulario que tengo de un solo input me funciona correctamente la paginacion pero aqui le he dado mil vueltas y no lo consigo.

Esta es mi view:

Código Python:
Ver original
  1. @login_required
  2. def buscar(request):
  3.     errors = []
  4.     if request.method == 'GET':
  5.         if not request.GET.get('fecha_inicial', '') or not request.GET.get('fecha_final', ''):
  6.             errors.append('por favor introduce fecha inicio y fecha fin ambas son requeridas.')
  7.         else:
  8.             q1 = request.GET.get('q1', '')
  9.             q2 = request.GET.get('q2', '')
  10.             q3 = request.GET.get('q3', '')
  11.             q4 = request.GET.get('q4', '')
  12.             fecha_inicial = request.GET.get('fecha_inicial', '')
  13.             fecha_final = request.GET.get('fecha_final', '')
  14.             qs1 = incidencias.objects.filter(Parque__icontains=q1)
  15.             qs2 = qs1.filter(Tipo__icontains=q2)
  16.             qs3 = qs2.filter(Fallo__icontains=q3)
  17.             qs4 = qs3.filter(Intervencion__icontains=q4)
  18.             q = qs4.filter(Fecha__range=(fecha_inicial, fecha_final))
  19.             queryset_list = q
  20.             paginator = Paginator(queryset_list, 20)
  21.  
  22.             page = request.GET.get('pagina')
  23.             try:
  24.                 queryset = paginator.page(page)
  25.             except PageNotAnInteger:
  26.                
  27.                 queryset = paginator.page(1)
  28.             except EmptyPage:
  29.                
  30.                 queryset = paginator.page(paginator.num_pages)
  31.  
  32.             context = {
  33.                 "objetc_list": queryset,
  34.                 "parte": "Lista",
  35.             }
  36.             return render(request, 'partes.html', context)
  37.         return render(request, 'formulario.html',
  38.         {'errors': errors})

Última edición por eibi76; 13/01/2016 a las 07:34