Модель Django TimeField без секунд

StackOverFlow.com

9
задан Hellnar 6 August 2009 в 17:21
поделиться

1 ответ

Поля DateTime всегда будут хранить также секунды; однако вы можете легко указать шаблону отображать только часы и минуты с помощью фильтра time :

{{ value|time:"H:M" }}

где «значение» - это переменная, содержащая поле datetime.

Конечно, вы можете также прибегают к другим уловкам, вроде вырезания секунд с поля при сохранении; потребовалось бы лишь небольшое изменение кода в представлении, обрабатывающем форму, чтобы сделать что-то вроде этого:

if form.is_valid():
  instance = form.save(commit=False)
  instance.nosecs = instance.nosecs.strptime(instance.nosecs.strftime("%H:%M"), "%H:%M")
  instance.save()

(примечание: это уродливый и непроверенный код, просто чтобы дать представление!)

Наконец, вы Следует отметить, что администратор по-прежнему будет отображать секунды в поле.
Однако это не должно вызывать большого беспокойства, потому что администратор должен использоваться только теми пользователями, которым можно дать указание не использовать эту часть поля.
Если вы хотите исправить также и администратора, вы все равно можете назначить форме свой собственный виджет, и, таким образом, администратор будет его использовать. Конечно, это потребует значительных дополнительных усилий.

6
ответ дан 4 December 2019 в 10:05
поделиться
Другие вопросы по тегам:

Похожие вопросы: