0

最后,我想要一张包含人名、开始时间、结束时间和工作时间(开始时间和结束时间之间的差异)的表。我将开始时间和结束时间作为表单中的日期时间,但无法弄清楚如何在不出错的情况下添加小时差。我尝试从 request.POST['end'] 中减去 request.POST['start'] 但它给了我一个错误,即不允许从 unicode 中减去类型 unicode。

这是我目前在views.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()

这是models.py ...

class Workday(models.Model):
    name = models.ForeignKey(User)
    start = models.DateTimeField()
    end = models.DateTimeField()
    hours = models.DateTimeField()
  1. 如何从开始和结束表单输入中保存小时字段?
  2. 我想将它用于一个 sql 查询,该查询将总结一周的工作时间,并将其与列出用户信息(电子邮件、电话号码、位置)的表连接起来......我可以在这里使用一个函数吗?另外,如果有人想真正提供帮助,那么在 djangos orm 中这种类型的查询会是什么样子?
4

1 回答 1

0

您不应该使用来自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为整数字段,而不是DateTimeField.

于 2013-09-21T06:27:38.007 回答