【问题标题】:How to format DurationField input as min:sec:millisec Django如何将 DurationField 输入格式化为 min:sec:millisec Django
【发布时间】:2022-11-17 00:34:41
【问题描述】:

我想强制用户使用格式 min:sec:millisec(例如 00:00:000)将单圈时间输入 Form。我也想在 DetailView 中以这种格式显示这些时间,但我想将它们存储为毫秒以计算个人最好成绩和单圈差异。

我试图将默认的 DurationField 值设置为 01:01:001 但它以 HH:MM:SS.MS 格式显示 这是我的model

class SwimTime(models.Model):
    swimmer =models.ForeignKey(Swimmer, on_delete=models.CASCADE)
    time = models.DurationField(_('Time'), default= timedelta(minutes=1, seconds=1, milliseconds=1))
    distance = models.PositiveIntegerField(_('Distance'),null = False, default=50)
    strokeType = models.CharField(_('Stroke Type'),max_length=20, choices=strokeTypes, default='FC')
    date = models.DateField(_('Date Recorded'),default = timezone.now)
    def save(self, *args, **kwargs):
        self.full_clean()
        return super().save(*args, **kwargs)

【问题讨论】:

    标签: django django-models django-forms


    【解决方案1】:

    如果您想有一个“示例”,您可以在显示预期输入格式的字段中使用help 选项。

    无论如何,这与它将如何在任何模板甚至数据库或浏览器验证中呈现无关。

    对于模板,您可以使用日期时间格式。

    另外,阅读您的数据我猜 null=False 在您使用它的某些领域不是必需的。请记住 null=True 和 blank=True 有不同的用途。

    希望尽快改进这个答案;)

    【讨论】:

      猜你喜欢
      • 2016-01-11
      • 2015-06-07
      • 1970-01-01
      • 2019-05-15
      • 1970-01-01
      • 1970-01-01
      • 2012-10-30
      • 2022-01-26
      • 2015-06-22
      相关资源
      最近更新 更多