更改Django TimeInput中的默认时间

时间:2014-01-21 21:19:56

标签: python django

我正在Django写一个小应用程序来帮助我们的培训部门管理培训课程。我有一个名为Schedule的模型,它保存特定类的预定日期。

附表

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:0008:0012:0012:3016:0016:30

2 个答案:

答案 0 :(得分: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。

答案 1 :(得分:0)

您可以避免使用窗口小部件,并使用choices参数使用简单的下拉列表,如下所示:

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'),
))

希望这有帮助