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@login_required
def buscar(request):
errors = []
if request.method == 'GET':
if not request.GET.get('fecha_inicial', '') or not request.GET.get('fecha_final', ''):
errors.append('por favor introduce fecha inicio y fecha fin ambas son requeridas.')
else:
q1 = request.GET.get('q1', '')
q2 = request.GET.get('q2', '')
q3 = request.GET.get('q3', '')
q4 = request.GET.get('q4', '')
fecha_inicial = request.GET.get('fecha_inicial', '')
fecha_final = request.GET.get('fecha_final', '')
qs1 = incidencias.objects.filter(Parque__icontains=q1)
qs2 = qs1.filter(Tipo__icontains=q2)
qs3 = qs2.filter(Fallo__icontains=q3)
qs4 = qs3.filter(Intervencion__icontains=q4)
q = qs4.filter(Fecha__range=(fecha_inicial, fecha_final))
queryset_list = q
paginator = Paginator(queryset_list, 20)
page = request.GET.get('pagina')
try:
queryset = paginator.page(page)
except PageNotAnInteger:
queryset = paginator.page(1)
except EmptyPage:
queryset = paginator.page(paginator.num_pages)
context = {
"objetc_list": queryset,
"parte": "Lista",
}
return render(request, 'partes.html', context)
return render(request, 'formulario.html',
{'errors': errors})