我正在尝试为飞行员建造一个小型的日志,用户可以输入起飞时间和登陆时间,表格将在以下时间内返回,时间为02:34小时,即2小时34分钟。 在models.py方面,我就是这样设置的:
take_off_time = models.TimeField()
land_time = models.TimeField()
tot_time_field = models.DurationField()
model.Duration似乎不是这里的答案...... 到目前为止,我在forms.py上简单地渲染了模型。
所以问题是:
我可以使用什么代替durationField?
如何获取输入并进行计算?
我在models.py中试过一个简单的:
def get_total_time(self):
self.tot_time_field = self.land_time - self.take_off_time
return self.tot_time
然后在表单中使用tot_time但我不确定这是否正确。
答案 0 :(得分:0)
class Foo(models.Model):
def save(Foo, self).save(*args, **kwargs):
if not self.tot_time_field:
self.tot_time_field = self.get_total_time()
super(Foo, self).save(*args, **kwargs)
答案 1 :(得分:0)
Hedde van der Heide让我朝着正确的方向前进,我终于找到了答案。 首先我像这样设置一个total_time:
def time_delta(self):
t = self.land_time - self.take_off_time
return str(td)
然后我保存了它:
def save(self,*args,**kwargs):
self.tot_time_field = self.time_delta()
super(Log,self).save(*args,**kwargs)
我将模型中的tot_time_field = models.DurationField()
更改为:
tot_time_field = models.CharField(max_length=200,blank=True)because i couldn't make the duration field work.
最后但并非最不重要的是,模型前两个模型必须更改为DateTimeField 而不是TimeField,因为time_delta(td)不会以其他方式工作以便将其包装起来: models.py:
take_off_time = models.TimeField()
land_time = models.TimeField()
total_time_field = models.Charfield()
def time_delta(self):
t = self.land_time - self.take_off_time
return str(td)
def save(self,*args,**kwargs):
self.tot_time_field = self.time_delta()
super(Log,self).save(*args,**kwargs)
希望有所帮助....