我正面临python datetime对象的问题,特别是datetime.timedelta() &



我试图找到天作为一个数字的差异,而不是datetime.timedelta()实例。我使用的是Django 3.2版本,从模板上的表单获取日期值

[假设所有必需的库都已导入,因为我在这里面临的不是导入错误)

下面是模板中的代码- dateform.html

<span style="position: absolute; right: 0%;font-size: 0.5em;" class="pull-left">
<form method="GET" action="{% url 'shifts:timeSheetFiltered' %}">           
{% csrf_token %} start
<input type="date" id="start-date"
name="start-date" >
end             
<input type="date" id="end-date"
name="end-date" >
<button type="submit" class="btn btn-xs btn-info"><i class="fa fa-filter"></i></button>
</span>
</form>
</span> 

下面是其中一个django视图中的view函数。

def timeSheetFiltered(request):

end_date = forms.DateField().clean(request.GET.get('end-date'))
start_date = forms.DateField().clean(request.GET.get('start-date'))
num_days = end_date - start_date
num_weeks = math.ceil(num_days/7)
week_pack = []
counter = 0
while counter <= num_days:
week_pack.append(start_date + timedelta(days=counter))
counter = counter + 1
shifts = Shift.objects.filter(time_added__range = [start_date,end_date])

context = {
'shifts': shifts,
'start_date': start_date,
'end_date': end_date,
'week_pack': week_pack,
'num_weeks': num_weeks
}
return render(request, 'shifts/timeSheetFiltered.html', context)

现在,当尝试处理请求时,我知道num_days变量返回一个datetime.timedelta(days={what-ever-the difference-here})。我不想要那个对象,我怎么能从datetime.timedelta()中提取天数作为普通数字(整数)?当我运行脚本时,我最终在错误中说TypeError在/shifts/timeSheetFiltered/必须是实数,而不是datetime。timedelta。和指向它的行num_weeks = math.ceil(num_days/7)包含在我刚刚共享的views.py文件中。

您可以使用daystimedeltaas

的性质
num_days = (end_date - start_date).days

相关内容

最新更新