2014-01-21 4 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 виджет, это немного неудобно для пользователя, чтобы ввести время, потому что оно должно быть введено как 07:00:00 на 7 утра.

Справа от TimeInput виджета есть значок часов, который содержит следующее:

Now 
Midnight 
6 AM 
Noon 

Есть ли способ задать разные значения? Есть, вероятно, только несколько значений, которые меня интересуют, такие как 07:00, 08:00, 12:00, 12:30, 16:00, 16:30.

+1

что-то [как это] (HTTP: // StackOverflow .com/questions/5770973/django-how-to-change-the-choice-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'),
))

Надеется, что это помогает

Смежные вопросы