2014-01-21 61 views
1

我正在Django中編寫一個小型應用程序來幫助我們的培訓部門管理培訓課程。我有一個名爲Schedule的模型,它包含特定課程的預定日期。更改Django TimeInput中的默認時間

附表

class Schedule(models.Model): 
    scheduled_class = models.ForeignKey(ScheduledClass) 
    class_date = models.DateField() 
    start_time = models.TimeField() 
    end_time = models.TimeField(null=True, blank=True, default=None) 

    def __unicode__(self): 
     return unicode(self.class_date) 

Schedule對象與ScheduledClass對象內嵌顯示,以便創建的類時,用戶可以添加類的日期。

我不喜歡默認TimeInput小部件的感覺,用戶輸入時間有些尷尬,因爲它需要在上午7點輸入爲07:00:00

TimeInput小部件的右邊有一個包含以下內容的時鐘圖標:

Now 
Midnight 
6 AM 
Noon 

是否有指定不同的值的方法嗎?可能只有少數我感興趣的值,例如07:00,08:00,12:00,12:30, 16:00, 16:30

+1

東西[像這樣(HTTP://計算器.com/questions/5770973/django-how-to-change-the-choices-of-admintimewidget),也許? – summea

+0

我的Google技巧顯然需要幫助。讓這個答案,我會標記它。 – Tony

+0

不用擔心;但唯一的問題是兩個問題都非常相似(至少從我的角度來看......),如果來自另一個問題的答案最終爲您工作,我不確定這個問題是否需要堅持。 .. :) – summea

回答

1

您可以創建自己的小部件..或其他解決方法是在您的靜態文件中輸入文件「admin/js/admin/DateTimeShortcuts.js」(覆蓋/ http://d.pr/i/uXsL)並更改modifyDateTimeShortcut插件。在你的情況下,僅更換此:

quickElement("a", quickElement("li", time_list, ""), gettext("Now"), "href", "javascript:DateTimeShortcuts.handleClockQuicklink(" + num + ", new Date().strftime('" + time_format + "'));"); 
quickElement("a", quickElement("li", time_list, ""), gettext("Midnight"), "href", "javascript:DateTimeShortcuts.handleClockQuicklink(" + num + ", new Date(1970,1,1,0,0,0,0).strftime('" + time_format + "'));"); 

... 

爲:

quickElement("a", quickElement("li", time_list, ""), gettext("Now"), "href", "javascript:DateTimeShortcuts.handleClockQuicklink(" + num + ", new Date().strftime('" + time_format + "'));"); 
quickElement("a", quickElement("li", time_list, ""), gettext("07:00"), "href", "javascript:DateTimeShortcuts.handleClockQuicklink(" + num + ", new Date(1970,1,1,7,0,0,0).strftime('" + time_format + "'));"); 
quickElement("a", quickElement("li", time_list, ""), gettext("12:00"), "href", "javascript:DateTimeShortcuts.handleClockQuicklink(" + num + ", new Date(1970,1,1,12,0,0,0).strftime('" + time_format + "'));"); 
quickElement("a", quickElement("li", time_list, ""), gettext("12:30"), "href", "javascript:DateTimeShortcuts.handleClockQuicklink(" + num + ", new Date(1970,1,1,12,30,0,0).strftime('" + time_format + "'));"); 
quickElement("a", quickElement("li", time_list, ""), gettext("16:00"), "href", "javascript:DateTimeShortcuts.handleClockQuicklink(" + num + ", new Date(1970,1,1,16,0,0,0).strftime('" + time_format + "'));"); 
quickElement("a", quickElement("li", time_list, ""), gettext("16:30"), "href", "javascript:DateTimeShortcuts.handleClockQuicklink(" + num + ", new Date(1970,1,1,16,30,0,0).strftime('" + time_format + "'));"); 

... 

結果:

http://d.pr/i/3ZmW

而且這裏的完整代碼:https://gist.github.com/hannicolas/8551106

Saludos。

0

您可以使用小部件避免和使用一個簡單的下拉使用的選擇參數,如下所示:

class Class(Model): program = ForeignKey('Program') time_of_the_day = TimeField(choices=( (datetime.datetime.strptime('7:00 am', "%I:%M %p").time(), '7:00 am'), (datetime.datetime.strptime('8:00 am', "%I:%M %p").time(), '8:00 am'), (datetime.datetime.strptime('9:00 am', "%I:%M %p").time(), '9:00 am'), (datetime.datetime.strptime('6:00 pm', "%I:%M %p").time(), '6:00 pm'), (datetime.datetime.strptime('7:00 pm', "%I:%M %p").time(), '7:00 pm'), (datetime.datetime.strptime('8:00 pm', "%I:%M %p").time(), '8:00 pm'), (datetime.datetime.strptime('9:00 pm', "%I:%M %p").time(), '9:00 pm'),
))

希望這有助於