Django:如何从一个表单中获取两个datetime字段,计算小时差,并保存到数据库中?

2024-09-28 01:30:37 发布

您现在位置:Python中文网/ 问答频道 /正文

最后,我希望有一个表,其中有人名、开始时间、结束时间和工作时间(开始和结束时间之间的差异)。我将开始时间和结束时间作为表单中的日期时间,但无法计算如何在不出错的情况下添加小时差。我试着做减法请求.POST['start']开始请求.POST['end']但它给了我一个错误:不允许从unicode中减去unicode类型。在

以下是我到目前为止在视图.py这给我带来了错误。。。在

if request.method =='POST':
    e = datetime.datetime.strptime(request.POST['end'], "%Y-%m-%d %H:%M")
    s = datetime.datetime.strptime(request.POST['start'], "%Y-%m-%d %H:%M")
    timediff = e-s
    workform=WorkdayForm(request.POST)
    if workform.is_valid():
        instance = workform.save(commit=False)
        instance.unit = unit
        instance.hospital = hospital
        instance.start = request.POST['start']
        instance.end = request.POST['end']
        instance.hours = timediff
        instance.system = system
        instance.save()

这是模型.py。。。在

^{pr2}$
  1. 如何保存“开始”和“结束”窗体输入的“小时”字段?在
  2. 我想把它用于一个sql查询,它将一周的工作时间相加,并将它与一个列出用户信息(电子邮件、电话、职位)的表连接起来。。。我可以用函数来代替吗?另外,如果有人真的想提供帮助,那么在djangos orm中这种查询会是什么样子?在

Tags: instancepydatetimeifrequest错误时间unicode
1条回答
网友
1楼 · 发布于 2024-09-28 01:30:37

您不应该使用来自request.POST的数据使用来自form.cleaned_data的数据来获取适当的数据。在

您可以将代码更新为:

if request.method =='POST':
    workform=WorkdayForm(request.POST)
    if workform.is_valid():
        instance = workform.save(commit=False)
        instance.unit = unit
        instance.hospital = hospital

        instance.start = form.cleaned_data['start']
        instance.end = form.cleaned_data['end']
        timediff = instance.end - instance.start
        instance.hours = timediff.seconds/3600

        instance.system = system
        instance.save()

您需要更改模型,使hours为整数字段,而不是{}。在

相关问题 更多 >

    热门问题