Joa*_*cas 2 python django date-range django-views python-datetime
我有以下情况:
这是我的views.py:
def home(request):
date = datetime.date.today()
start_week = date - datetime.timedelta(date.weekday() + 1)
end_week = start_week + datetime.timedelta(6)
week_tasks = Task.object.filter(owner=request.user, start_date__range=[start_week, end_week])
context = {}
context['week_tasks'] = week_tasks
return render(request, 'home.html', context)
Run Code Online (Sandbox Code Playgroud)
该视图检查start_date(DateField)是否在本周的范围内。但我的数据库中有另一个字段 ,end_date我想检查本周是否有此范围的任何值。
检查示例:
假设当前周是第 17 天的那一周。以我目前的观点,只有All Day Event和Conference属于该周。我需要证明所有这些事件都属于本周。
观察:我不能只检查 和 是否start_date在一周内,因为我有Long Eventend_date的情况,它在一周之前开始并在一周之后结束。
views.py:
def home(request):
date = datetime.date.today()
if date.isoweekday() == 7:
date = date + datetime.timedelta(1)
start_week = date - datetime.timedelta(date.isoweekday())
end_week = start_week + datetime.timedelta(6)
week_tasks = Task.object.filter(owner=request.user).exclude(end_date__lt=start_week).exclude(start_date__gt=end_week)
context = {}
context['week_tasks'] = week_tasks
return render(request, 'home.html', context)
Run Code Online (Sandbox Code Playgroud)
周窗口定义为:week_start, week_end
任务定义为:task_start、task_end
任务与周重叠,如果:
task_start < week_end and task_end >= week_start
Run Code Online (Sandbox Code Playgroud)