格式化jquery timepicker加载到django TimeField中

时间:2012-11-06 16:33:12

标签: jquery django django-forms

格式化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>  

2 个答案:

答案 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