2011-10-11 19 views
9

Djangoにアプリケーションを作成していて、モデルでいくつかのTimeFieldsを使用しています。私は時間形式hh:mm(hh:mm:ssまたはhh p.m./a.m.または他のものではない)で作業したいだけです。私は自動的にのようなジャンゴで作成された入力ボックスを使用しています私のテンプレートではTrueDjangoテンプレートのTimeField形式

に設定されている場合 私は、マニュアルに従って

USE_L10NオーバーライドTIME_FORMATTIME_FORMAT = 'H:i'USE_L10N = Falseを設定ジャンゴを設定しています

{{formName.timeField}} 

問題は、「10:00」のようなものを紹介し、POSTPOSTが完了すると、Django(または何でも)が「10:00:00」になります(秒が追加されます)。

  • 日時フィールドに保存された日付を表示する形式を指定する方法はありますか?トリックを行う入力ボックスの値にちょうど|date:"H:i"のようなものを使うことができれば。他の側では

私は(直接{{formName.timeField}}を使用していない)私は手動で入力ボックスを行うことができます知っているが、私は、少なくともために(私はそれを避けたい場合と、過去にいくつかの問題を持っていました瞬間)。

ありDjango TimeField Model without secondsでこの同様の問題でもあるが、解決策は動作しません(それは私を与える「NoneType」オブジェクトには属性「strptime」がありません)

答えて

17

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

from django import forms 

class SettingsForm(forms.Form): 
    delivery_time = forms.TimeField(widget=forms.TimeInput(format='%H:%M')) 
+1

はどうもありがとうございました!これはうまく動作します! – user989863

+5

'TimeInput'ウィジェットの' format'パラメータは、フィールドの入力検証ではなく、フィールドの初期値出力フォーマットのみを制御する、将来の読者のためのメモです。入力検証形式の場合、 'TimeField'の' input_formats'パラメータを使用します。 – Ghopper21

8

はあなたがすべてのTimeFieldsが使用する形式を持っていると仮定すると、あなたの設定ファイルにTIME_INPUT_FORMATSを追加することができます。たとえば、TIME_INPUT_FORMATS = ('%I:%M %p',)は時間を「午後5時30分」とします。

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

+0

良い方法です!問題をグローバルに解決します。 – maciek