queryset gte django django-views django-filter django-filters

queryset - django date filter gte y lte



filter django (1)

Necesito encontrar datos dentro de un cierto conjunto de parámetros Estoy construyendo un sistema de reserva pequeño, que permite al usuario ver qué vehículos están disponibles para reservar para su pequeño viaje de safari.

El sistema tiene reservas que han sido ingresadas previamente o hechas previamente por un cliente.

si la reserva es pickup_date = 2011-03-01 y dropoff_date = 2011-03-15 y ejecuto una consulta con pickup=2011-03-09 y dropoff=2011-03-14 en mis vistas como a continuación, no devuelve cualquier resultado para ver si se ha realizado una reserva dentro de ese marco de tiempo.

views.py

def dates(request, template_name=''groups/_dates.html''): pickup=request.GET.get(''pickup'',''None''); dropoff=request.GET.get(''dropoff'',''None''); order = Order.objects.filter(pick_up__lte=pickup).filter(drop_off__gte=dropoff) context = {''order'':order,} return render_to_response(template_name,context, context_instance=RequestContext(request))

¿Alguna sugerencia sobre cómo hacer esto? ¿O debería estar buscando una forma alternativa de ejecutar esta consulta?


Podría ser posible que, al pasar la cadena sin formato al conjunto de consulta, no tenga el formato correcto, intente convertir las cadenas en objetos de fecha y hora.

Más tarde puede intentar usar la búsqueda de rango que es más eficiente en algunos motores de DB y más fácil de leer y codificar.

from django.db.models import Q start_date = datetime.date(2005, 1, 1) end_date = datetime.date(2005, 3, 31) orders = Order.objects.filter(drop_off__gte=start_date, pick_up__lte=end_date) # Or maybe better orders = Order.objects.filter(Q(drop_off__gte=start_date), Q(pick_up__lte=end_date))