如何通过django表单进行datetime.time类型的输入,并在django模型中对其执行算术运算



我的模型.py:

class Attendancename(models.Model):
    teacher_name = models.ForeignKey(Teachername)
    date = models.DateField('Date')
    intime = models.TimeField('IN-TIME')
    outtime = models.TimeField('OUT-TIME')
    def hours_conversion(self):
        tdelta = (datetime.datetime.combine(datetime.date.today(),outtime) - datetime.datetime.combine(datetime.date.today(),intime))
        return (tdelta).second/3600
    def __str__(self):
        return "%s" %self.teacher_name

我的观点.py:

def add_atten(request):
    if request.method == 'POST':
        form = AttendancenameForm(request.POST)
        if form.is_valid():
            form.save()
            return HttpResponseRedirect(reverse('student:listatten'))
        else:
            print(form.errors)
    else:       
         form = AttendancenameForm()
    return render(request, 'add_atten.html', {'form': form},)

我的表格.py:

class AttendancenameForm(ModelForm):
        teacher_name = forms.ModelChoiceField(queryset=Teachername.objects.all())
    class Meta:
        model = Attendancename
        fields = ('teacher_name', 'date', 'intime', 'outtime',)

我想从'intime''outtime'属性计算时间差。但我遇到了一个意外的错误:'TypeError: unsupported operand type(s) for -: 'datetime.time' and 'datetime.time''。请帮我让它工作吗?

我不是django方面的专家,但似乎intimeouttime属于datetime.time类型,您不能使用-运算符来减去它们,而是尝试使用以下-

import datetime
outtime = datetime.time(10,0)
intime = datetime.time(5,0)
tdelta = (datetime.datetime.combine(datetime.date.today(),outtime) - datetime.datetime.combine(datetime.date.today(),intime))
print(tdelta.seconds/3600)

最新更新