在我的网站上,我有一个页面,您可以通过javascript日历小部件输入开始日期和结束日期。它将查询数据库并返回结果。这是我的观点
class flagfilter(ListView, View):
form_class = FlagReportForm
template_name = 'free/flagreport.html'
paginate_by = 20
def get(self, request):
form = self.form_class(None)
return render(request, self.template_name, {'form': form})
def post(self, request):
form = self.form_class(request.POST)
if form.is_valid():
start_date = request.POST.get('start_date', '')
end_date = request.POST.get('end_date', '')
user = request.user
s = datetime.datetime.strptime(str(start_date), '%m/%d/%Y')
e = datetime.datetime.strptime(str(end_date), '%m/%d/%Y')
if e == s:
e = e + datetime.timedelta(days=2)
s_filtered = s.strftime('%Y-%m-%d')
e_filtered = e.strftime('%Y-%m-%d')
punch = Punch.objects.filter(date__range=[str(s_filtered),str(e_filtered)]).order_by('-date')
punches = punch.filter(user=user)
context = {'punches': punches}
return render(request, 'free/flagreport2.html', context)
return render(request, self.template_name, {'form': form})
我的问题是,如果您的日期范围在今天的日期结束,则它不会从当天返回对象。我添加了这一行:
if e == s:
e = e + datetime.timedelta(days=2)
我之所以这样做是因为如果您将开始日期和结束日期作为当前日期,那么它将无法返回今天的打孔对象。这解决了问题,但我仍有问题。如果你输入一个日期范围的开始日期,比如说,上周的某个时间。结束日期是当天。它仍然不会返回当前的日期打孔对象。因此,我想用检查结束日期是否为当前日期的内容替换此代码,如果是,请在结束日期添加一天。我已经尝试过一些东西但却无法工作。任何帮助表示赞赏!
答案 0 :(得分:0)
好的,所以我注意到无论选择哪个日期作为结束日期,都会发生同样的事情。结束日期结果不会返回。所以添加
e = e + datetime.timedelta(days=)
应该解决我的问题!
答案 1 :(得分:0)
您可以尝试使用
Punch.objects.filter(date__gte=s, date__lte=e).order_by('-date')
而不是date__range,我认为应该省去你必须使用strftime和任何timedelta的东西
编辑:我认为甚至不需要Q