2011-10-11 55 views
9

我正在編寫Django中的應用程序,並在模型中使用了多個TimeFields。我只想使用時間格式hh:mm(而不是hh:mm:ss或hh p.m./a.m。或其他東西)。 我已經根據文檔設置Django的設置TIME_FORMAT = 'H:i'USE_L10N = FalseDjango模板中的TimeField格式

USE_L10N覆蓋TIME_FORMAT如果設置爲True

在我的模板,我使用的Django自動創建像輸入框:

{{formName.timeField}} 

問題是,只要我介紹像「10:00」這樣的東西,並做一個POST,當POST完成Django(或其他)將它變成「10:00:00」(所以它增加了秒)。

  • 有沒有辦法指定日期時間字段顯示保存日期的格式?如果我可以在輸入框的值中使用|date:"H:i"之類的東西,就可以做到這一點。

在另一邊,我知道我可以做手工輸入框(不直接使用{{formName.timeField}}),但我已經在與過去的一些問題,所以我想以避免(至少在時刻)。

也有在Django TimeField Model without seconds這種類似的問題,但解決方案不起作用(它給了我「NoneType」對象有沒有屬性「strptime」)

回答

17

我曾在我的應用程序正是這個問題,並解決它通過傳遞format參數Django的TimeInput部件:

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