2

我在格式化我的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>  
4

2 回答 2

0

也许您需要做的就是HH:MM AM/PM在整个站点中显示,并让TimeField您处理它在数据库中的存储方式。如果您对此感到满意,则可以使用以下设置:

# settings.py

...

TIME_INPUT_FORMATS = ['%I:%M %p']

有关更多信息,请参阅文档

于 2015-04-16T15:22:41.560 回答
0

我正在使用这个时间选择器,但遇到了类似的问题。

在我的 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'

我不知道为什么另一种方法不起作用,或者这种解决方法是否正确,但它似乎对我有用。

于 2014-08-07T21:41:07.733 回答