django日期过滤器gte和lte

django日期过滤器gte和lte,django,django-views,django-filters,Django,Django Views,Django Filters,我需要在一组特定的参数中查找数据 我正在建立一个小的预订系统,让用户可以看到哪些车辆可以预订他们的小旅行 系统具有以前输入的或以前由客户进行的预订 如果预订的picking\u date=2011-03-01和dropoff\u date=2011-03-15,并且我在下面的视图中使用picking=2011-03-09和dropoff=2011-03-14运行查询,它不会返回任何结果以查看是否在该时间范围内进行了预订 视图.py def dates(request, template_name

我需要在一组特定的参数中查找数据 我正在建立一个小的预订系统,让用户可以看到哪些车辆可以预订他们的小旅行

系统具有以前输入的或以前由客户进行的预订

如果预订的
picking\u date=2011-03-01
dropoff\u date=2011-03-15
,并且我在下面的视图中使用
picking=2011-03-09
dropoff=2011-03-14
运行查询,它不会返回任何结果以查看是否在该时间范围内进行了预订

视图.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))
有什么建议吗?
或者我应该寻找另一种运行此查询的方法吗?

是否可能因为您将原始字符串传递给queryset的格式不正确,请尝试将字符串转换为datetime对象

稍后,您可以尝试在某些DB引擎上使用范围查找更有效,并且更易于阅读和编码

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))
你能试试这个吗

order = Order.objects.filter(pick_up**__date__**lte=pickup).filter(drop_off**__date__**gte=dropoff)

您想在取车和下车之间归还预订吗?如果是,则不应该是Order.objects.filter(pick_-up_-gte=pick,drop_-off_-lte=dropoff),例如2011-03-09和2011-03-14之间的任何订单?或者我误解了这个要求?如果我,客户,想要预订一辆车,我的日期是2011-03-09,作为取车,2011-03-14,作为下车,并且系统上已经有另一个预订,日期是2011-03-01,作为取车,2011-03-15,作为下车,我希望系统告诉我这个时间段已经被占用。现在更有意义了?我总是建议使用表单来清理输入。最好在答案和链接中直接包含信息,这样当链接消失时,答案仍然有用。@Nick如果链接消失,可能是因为不再支持它了。我不认为这是一个问题,在这种情况下。