Как отформатировать ввод поля 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 имеют разное применение.
Надеемся, что скоро улучшим этот ответ ;)