Django-如何处理持续时间

问题描述 投票:0回答:1

我正在尝试显示比赛中的经过时间。

class results(models.Model):
    race_id = models.ForeignKey(Race, on_delete=models.CASCADE)
    runner_id = models.ForeignKey(Runner, on_delete=models.CASCADE)
    race_start = models.DateTimeField()
    race_finish = models.DateTimeField(blank=True, null=True)
    obs = models.TextField(blank=True)
    def __str__(self):
        return self.race_id.race_cod+" - "+self.runner_id.name
    class Meta:
        verbose_name_plural = "Results"

看这里,我发现了以下指南:

Django model elapsed time between two DateTimeFields

Django: What's the best field type to represent time elapsed?

不幸的是,这里提供的解决方案似乎有点复杂。

我也在.html视图页面中也找到了这种解决方法

<div class="info-box-content">
  <span class="info-box-number">Time - {{ results.race_finish|timesince:results.race_start }}</span>
</div>

这个问题是24小时内的所有内容都是x天,yy小时-而我需要将持续时间显示为HH:mm

这里有任何提示吗?

django time duration elapsed
1个回答
0
投票

为此,我建议添加自定义模板过滤器或新的模型属性。例如,如果要将其添加到模型中:

class results(models.Model):
    ...
    race_start = models.DateTimeField()
    race_finish = models.DateTimeField(blank=True, null=True)
    @property
    def duration(self):
        if not (self.race_start and self.race_finish): return None
        a,b=self.race_start, self.race_finish
        return '%s:%s' % ((b-a).days*24 + (b-a).seconds//3600, (b-a).seconds%3600//60)
© www.soinside.com 2019 - 2024. All rights reserved.