Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/334.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python 检查一个范围内的任何日期是否介于另一个范围之间_Python_Django_Django Views_Date Range_Python Datetime - Fatal编程技术网

Python 检查一个范围内的任何日期是否介于另一个范围之间

Python 检查一个范围内的任何日期是否介于另一个范围之间,python,django,django-views,date-range,python-datetime,Python,Django,Django Views,Date Range,Python Datetime,我有以下情况: 这是我的视图。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_dat

我有以下情况:

这是我的
视图。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)
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)
此视图检查开始日期(日期字段)是否在当前周的范围内。但我在数据库中有另一个字段,
end\u date
,我想检查这个范围的任何值是否在本周

检查示例: 让我们假设当前一周是第17天的一周。以我目前的观点,只有全天活动和会议属于一周。我需要证明所有这些事件都属于本周

备注:我不能只检查
start\u date
end\u date
是否在一周内,因为我有一个长事件的情况,它在一周之前开始,在一周之后结束


工作:
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)
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)

周窗口定义为:周开始,周结束

任务定义为:任务开始,任务结束

如果出现以下情况,则任务与周重叠:

task_start < week_end and task_end >= week_start
任务开始<周结束和任务结束>=周开始

谢谢您的帮助。我只需要将这个逻辑添加到我的查询中:
week\u tasks=Task.object.exclude(所有者=request.user,开始日期\u gt=end\u week)。exclude(结束日期\u lt=start\u week)
实际上,我需要做这个查询:
week\u tasks=Task.object.filter(所有者=request.user)。exclude(结束日期\u lt=start\u week)。exclude(开始日期\u gt=end\u week)
。和另一个一起,我把主人排除在外。。。哈哈=D