我需要在一组参数中找到数据 我正在建立一个小型预订系统,让用户可以看到哪些车辆可以预订他们的小旅行团。
系统预先输入或由客户提前预订。
如果预订的pickup_date = 2011-03-01
和dropoff_date = 2011-03-15
并且我在我的观看中使用pickup=2011-03-09
和dropoff=2011-03-14
运行查询,则不会返回任何结果以查看是否在此时间范围内预订。
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))
有关如何执行此操作的任何建议? 或者我应该考虑另一种运行此查询的方法吗?
答案 0 :(得分:19)
当你将原始字符串传递给查询集的格式不正确时,尝试将字符串转换为datetime对象是否可行。
稍后您可以尝试使用范围查找在某些数据库引擎上更高效,并且更易于阅读和编码。
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))
答案 1 :(得分:1)
你可以试试这个:
order = Order.objects.filter(pick_up**__date__**lte=pickup).filter(drop_off**__date__**gte=dropoff)
https://docs.djangoproject.com/fr/2.0/ref/models/querysets/#date