我在格式化 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>
最佳答案
我正在使用this timepicker相反,但有类似的问题。
在我的 forms.py 中,我改变了
def make_custom_datefield(f):
表单域 = 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'
然后,在我的表单类中,我有
类 DonationForm(forms.ModelForm):
...
时间 = forms.TimeField(input_formats=['%I:%M %p'],widget=time_widget)
...
另请务必注意您的格式掩码 '%H'
不适用于 '%p'
,因此请使用 '%I'
相反。
我不知道为什么另一种方法不起作用,或者这个解决方法是否正确,但它似乎对我有用。
关于jquery - 格式化 jquery timepicker 以加载到 django TimeField,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13255371/