格式化jquery timepicker时遇到问题。我的问题是我希望时间以HH:MM AM / PM格式显示(因此用户可以这样看),但加载为军事时间(%H:%M)到时间段。我的表格如下:
if isinstance(f, models.TimeField):
formfield.widget.format = '%H:%M'
formfield.widget.attrs.update({'class':'timepicker', 'readonly':'true'})
我正在使用time without time zone
类型的Postgresql。 jquery(来自上面的链接)看起来是这样的:
<script type="text/javascript">
$(document).ready(function() {
$( ".timepicker" ).timepicker({
showPeriod: true,
showLeadingZero: true
});
});
</script>
如果我不使用showPeriod和showLoadingZero,它可以正常工作,但它不像我想的那样用户友好。
谢谢!
编辑:我正在使用模板系统,因此我对该字段的html如下所示: <div class="fieldWrapper">
{{ form.starttime.errors }}
<label for="id_starttime">Start Time:</label>
{{ form.starttime }}
</div>
答案 0 :(得分:0)
我使用的是this timepicker,但遇到了类似的问题。
在我的forms.py中,我更改了
def make_custom_datefield(f):
formfield = f.formfield()
if isinstance(f, models.TimeField):
formfield.widget.format = '%H:%M'
formfield.widget.attrs.update({'class':'timepicker', 'readonly':'true'})
到
time_widget = forms.widgets.TimeInput(attrs={'class': 'timepicker', 'readonly':'true'})
time_widget.format = '%I:%M %p'
然后,在我的表单类中,我有
class DonationForm(forms.ModelForm):
...
time = forms.TimeField(input_formats=['%I:%M %p'],widget=time_widget)
...
另请务必注意,您的格式掩码'%H'
不适用于'%p'
,因此请改用'%I'
。
我不知道为什么另一种方式不起作用,或者这种解决方法是否合适,但它似乎对我有用。
答案 1 :(得分:0)
也许您需要做的就是在整个网站上显示为HH:MM AM/PM
,并让TimeField
处理它在数据库中的存储方式。如果您对此感到满意,可以使用以下设置:
# settings.py
...
TIME_INPUT_FORMATS = ['%I:%M %p']
有关详细信息,请参阅the docs。