16

私はアプリケーションを作成していて、モデルでDjangoいくつかを使用しています。TimeFields時間形式hh:mmのみを使用したい(hh:mm:ssやhh pm / amなどではない)。私はdjangoの設定TIME_FORMAT = 'H:i'を行いUSE_L10N = False、ドキュメントに従って、

USE_L10NTIME_FORMATに設定されている場合はオーバーライドTrue

私のテンプレートでは、次のようにDjangoによって自動的に作成された入力ボックスを使用しています。

{{formName.timeField}}

POST問題は、「10:00」のようなものを導入して、を実行する限り、POSTDjango(またはその他)が実行されると、それを「10:00:00」に変換することです(つまり、秒が追加されます)。

  • 日時フィールドに保存された日付を表示する形式を指定する方法はありますか?|date:"H:i"入力ボックスの値のようなものを使用できれば、それでうまくいきます。

反対に、入力ボックスを手動で(直接使用せずに{{formName.timeField}})実行できることはわかっていますが、過去にいくつかの問題があったので、(少なくとも当面は)それを避けたいと思います。

秒のないDjangoTimeFieldModelにも同様の質問がありますが、ソリューションは機能しません(' NoneType'オブジェクトには属性がありません' strptime')

4

2 に答える 2

27

私は自分のアプリでまさにこの問題を抱えていて、formatパラメータを Django のTimeInputウィジェットに渡すことで解決しました:

from django import forms

class SettingsForm(forms.Form):
    delivery_time = forms.TimeField(widget=forms.TimeInput(format='%H:%M'))
于 2011-10-11T17:45:30.497 に答える
11

すべてで使用したいフォーマットがあると仮定すると、設定ファイルに をTimeFields追加できます。TIME_INPUT_FORMATSたとえば、TIME_INPUT_FORMATS = ('%I:%M %p',)時刻を「5:30 PM」のようにフォーマットします。

ドキュメント: https://docs.djangoproject.com/en/dev/ref/settings/#std:setting-TIME_INPUT_FORMATS

于 2013-11-04T22:19:06.047 に答える