2014-01-21 133 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'),
))

希望这有助于