Как отформатировать ввод поля DurationField как min:sec:millisec Django

Я хочу заставить пользователей вводить время прохождения круга в Form, используя формат min:sec:millisec (например, 00:00:000). Я также хочу отображать это время в этом формате в 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)

Если вы хотите иметь "пример", вы можете использовать опцию help для поля, показывающего ожидаемый формат ввода.

В любом случае, это не имеет никакого отношения к тому, как это будет отображаться в любом шаблоне или даже при проверке базы данных или браузера.

Для шаблонов можно использовать форматирование Datetime.

Также, читая ваши данные, я догадываюсь, что null=False не является необходимым в некоторых полях, которые вы используете. И не забывайте, что null=True и blank=True имеют разное применение.

Надеемся, что скоро улучшим этот ответ ;)

Вернуться на верх