【问题标题】:How to arrive endtime using starttime and duration in django model如何在 django 模型中使用开始时间和持续时间到达结束时间
【发布时间】:2016-12-11 22:45:04
【问题描述】:

我有一个这样的模型;

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 分钟内开始(开始时间)的对象) .

也很想知道是否有任何 django-app(add-ons) 用于基于时间的查询。

非常感谢!

【问题讨论】:

  • 请显示回溯。

标签: python django django-models


【解决方案1】:

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

start_time = models.TimeField()
end_time = models.TimeField()


def duration(self):
    return self.end_time - self.start_time

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

【讨论】:

    【解决方案2】:

    您可以将开始时间与今天的日期结合起来并添加持续时间:

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

    【讨论】:

      猜你喜欢
      • 2019-08-24
      • 1970-01-01
      • 2010-11-22
      • 2017-01-05
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2022-01-22
      相关资源
      最近更新 更多