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如果链接消失,可能是因为不再支持它了。我不认为这是一个问题,在这种情况下。