3

時間入力ウィジェットを上書きしましたが、そのフォームを送信すると、「有効な時間を入力してください」と表示されます

class TimePickerWidget(forms.TimeInput):                                                  
def render(self, name, value, attrs=None):                                                
    htmlString = u''                                                                      
    htmlString += u'<select name="%s">' % (name)                                          
    for i in range(12):                                                                   
            htmlString += ('<option value="%d:00 AM">%d:00 AM</option>' % (i,i))          
    htmlString +='</select>'                                                              
    return mark_safe(u''.join(htmlString))                                                

ご覧のとおり、時間選択用のドロップダウンボックスが表示されます。形で、それはによって呼び出されます

class JobForm (ModelForm):
   fromHour = forms.TimeField(widget=TimePickerWidget(format='%I:%M %p'))
   toHour = forms.TimeField(widget=TimePickerWidget(format='%I:%M %p'))

2つの質問があります。

1)送信すると、「有効な時間を入力してください」と表示されます。どうすればこれを解決できますか?

2)そのformat ='%I:%M%p'形式をTimePicketWidgetにカプセル化する方法はありますか?

4

1 に答える 1

0

input_format引数をTimeFieldに設定します。例:

fromHour = forms.TimeField(input_format='%I:%M %p', widget=TimePickerWidget(format='%I:%M %p'))
于 2012-12-10T10:38:06.037 に答える