如何使用django模型中的starttime和duration来到达endtime

时间:2016-12-11 22:45:04

标签: python django django-models

我有这样的模特;

starttime       =     models.TimeField('Show Start Time', )
duration        =     models.DurationField('Duration',)
endtime         =     models.TimeField('Show End Time (Optional)',blank=True, null=True )

我正在尝试在存储对象时到达结束时间的开始时间和持续时间;

def save(self, *args, **kwargs):
    startdelta=timedelta(hours=self.starttime.hour,minutes=self.starttime.minute,seconds=self.starttime.second)
    enddelta =  startdelta + self.duration
    self.endtime = enddelta
    super(Showsets, self).save(*args, **kwargs)

上面的代码引发了我的错误,我想知道django中的时域和持续时间字段是如何工作的还请协助查询基于starttime或endtime的字段的方法(比如从现在起30分钟内启动的对象(starttime))

也很想知道是否有基于时间查询的django-app(附加组件)。

非常感谢!

2 个答案:

答案 0 :(得分:3)

不确定这是否适合您的情况,但我通常会这样做:

set script /usr/local/bin/ipsecfixer.sh

spawn ssh -p 2228 $user@$ip

expect "password:"
send "$password\r";
expect ">"

send "su -\r"
expect "Password:"
send "$password\r"
expect "#"
send "/bin/bash $script $argv\r"
expect "#"

这似乎比存储开始时间和持续时间然后在save()上计算end_time更简洁的解决方案。

答案 1 :(得分:0)

您可以将starttime与今天的日期相结合并添加持续时间:

from datetime import datetime, date

self.endtime = (datetime.combine(date.today(), self.starttime) + self.duration).time()