問候, 我想實現只包含HH:MM(即16:46)格式的TimeField模型,我知道可以格式化一個常規的Python時間對象,但我迷路了關於如何使用Django進行管理。Django TimeField模型沒有秒
乾杯
問候, 我想實現只包含HH:MM(即16:46)格式的TimeField模型,我知道可以格式化一個常規的Python時間對象,但我迷路了關於如何使用Django進行管理。Django TimeField模型沒有秒
乾杯
DateTime fields永遠也存儲秒;但是,您可以輕鬆地告訴模板只顯示小時和分鐘,用time
過濾器:
{{ value|time:"H:M" }}
其中「值」是包含日期時間字段變量。
當然,你也可以使用其他技巧,比如在保存的時候從場上切出秒數;它需要只是一個小變化在視圖中的代碼處理的形式,做這樣的事情:
if form.is_valid():
instance = form.save(commit=False)
instance.nosecs = instance.nosecs.strptime(instance.nosecs.strftime("%H:%M"), "%H:%M")
instance.save()
(注:這是一個醜陋的和未經測試的代碼,只是爲了讓這個想法)
最後,您應該注意到管理員仍然會顯示該字段中的秒數。
儘管如此,它應該不是一個大問題,因爲管理員只能被一些可以被指示不使用該部分域的用戶使用。
如果您還想修補管理員,您仍然可以將自己的窗口小部件分配給窗體,從而讓管理員使用它。當然,這意味着需要額外的努力。
所以我覺得提出和接受的解決方案不是最佳的,因爲有:
datetime.widget = forms.SplitDateTimeWidget(time_format=('%H:%M'))
對於我來說,一個SplitDateTimeField但只將其更改爲TimeWidget。
希望它可以幫助其他人。
Django小部件可以用來輕鬆實現。
from django import forms
class timeSlotForm(forms.Form):
from_time = forms.TimeField(widget=forms.TimeInput(format='%H:%M'))
TimeField模型
在模板
是否顯示
{{ value|time:"H:i" }}
是不是顯示
{{ value|time:"H:M" }}
的Django 1.4.1
對於ModelForm
,可以很容易地添加插件這樣的,以避免被示出的秒(只顯示爲hh:mm):
class MyCreateForm(forms.ModelForm):
class Meta:
model = MyModel
fields = ('time_in', 'time_out',)
widgets = {
'time_in': forms.TimeInput(format='%H:%M'),
'time_out': forms.TimeInput(format='%H:%M'),
}
在Django上1。9以下格式應該可以工作:
{{ yourData.value|time:"H:i" }}
Django有一整套模板標籤和過濾器。
的Django 1.9對這個文檔是:
https://docs.djangoproject.com/en/1.9/ref/templates/builtins/#time
{{值|時間: 「H:我」}}爲我工作。 – GvS 2012-04-15 17:05:58
在Django基於類的視圖的表單中,設置TIME_INPUT_FORMATS的設置適用於我。 https://docs.djangoproject.com/zh/dev/ref/settings/#time-input-formats – maciek 2015-01-08 20:18:40
@maciek:那對我不起作用。在'settings.py'中設置'TIME_INPUT_FORMATS = [ '%H:%M', ]還不夠。我不得不指定小部件。 – SaeX 2015-10-20 12:29:23