我在如何正确显示模板中两个时间值的相加时遇到问题。这是我的代码。
模型.py
class UserTimesheet(models.Model):
employee = models.ForeignKey(Employee, models.SET_NULL, blank=True, null=True)
date = models.DateField()
monday_start_time = models.TimeField(_(u"Start Time"), null=True, blank=True)
monday_end_time = models.TimeField(_(u"End Time"), null=True, blank=True, )
@property
def get_monday_total(self):
if self.monday_start_time is not None and self.monday_end_time is not None:
return self.monday_end_time - self.monday_start_time
我尝试过使用:
{{ get_monday_total }}
{{ UserTimesheet.get_monday_total }}
还有很多不同的其他事情,但我一生都无法弄清楚如何在模板中显示此逻辑。有什么想法吗?
感谢所有帮助。
编辑
views.py
@login_required(login_url="/login")
def manage_timesheet(request, pk):
time = UserTimesheet.objects.all()
queryset = UserTimesheet.objects.get(id=pk)
form = Timesheet(instance=queryset)
if request.method == 'POST':
form = Timesheet(request.POST, instance=queryset)
if form.is_valid():
form.save()
return redirect('/timehub')
return render(request, 'newtimesheet/manage_timesheet.html', {"form": form, "queryset": queryset, "time": time})
第一个问题是你不能减去两个
time
。解决方法是使用 datetime
:
from datetime import datetime, time, date
monday_start_time = time(1, 1, 1, 1)
monday_end_time = time(1, 1, 1, 1)
delta = (datetime.combine(date.min, monday_start_time) - datetime.combine(date.min, monday_end_time))
# datetime.timedelta(days=-1, seconds=82738, microseconds=999999)
我不确定您想要显示什么信息,但您现在可以按原样使用此增量或进行进一步操作。
此外,由于您传递了
queryset
(应该重命名,因为.get
返回一个实例,而不是查询集),因此您应该在模板中使用{{ queryset.get_monday_total }}
。