2012-08-29 3 views
0

Я хочу иметь текстовое поле на своей веб-странице со снимком рядом с ним. когда пользователь нажимает на изображение, он показывает каландр, который помогает пользователю выбрать дату (всплывающий календарь). Я сделал это в raw html. но теперь я хочу использовать формы django (хотя у меня нет моделей), поэтому я искал и узнал, что мне нужно написать собственный виджет в forms.py. s.th как:popup calendar, нажав на изображение: формы django

class CalendarWidget(forms.TextInput): 
     css = ('/media/css/main.css', '/media/css/js-cal.css') 
     js = ('/media/js/js-cal.min.js') 

У меня есть класс backupFormforms.py в котором содержатся все поля формы.

мой вопрос: использовать выше CalendarWidget, должен ли я определить поле в классе backupForm?:

date1 = forms.CharField(widget=CalendarWidget) 

как я могу связать изображение с этим текстовым полем и силами пользователя, только ввод его дата из этого календаря?

ответ

0

Вы можете использовать поле формы поля ввода (текстовое поле) и применить CalendatWidget в качестве виджета этого поля. Виджет берет на себя ответственность за создание/привязку изображения, которое работает как кнопка.

Администратор Django использует AdminDateWidget на поле формы model.DateField автоматически, несмотря на форму модели, вы можете проверить его в django/contrib/admin/widgets.py. Проверьте функцию init() внутри django/contrib/admin/static/admin/js/admin/DateTimeShortcuts.js, чтобы узнать, как Django создает/привязывает кнопку календаря к одному полю ввода.

Вы можете даже использовать AdminDateWidget в первой полосе, пока страница загрузится необходимые CSS/JS ресурсов и имеет определенный набор атрибутов ....

+0

спасибо, но что вы имеете в виду под «виджет принимает ответственность за создание/привязку изображения, которое работает как кнопка. "? Я не могу понять, как я могу связать изображение с текстовым полем. что я должен делать с/после этой строки кода? – user1597122

+0

@ user1597122 Возьмите встроенный 'DateTimeShortcuts.js', например, он вызывается w/input (текстовое поле в ваших словах) и динамически создает тег' ', который реагирует на событие щелчка мыши, отображает календарь и заполняет выбранные значение возвращается к вводу, все делается в javascript, ref [код здесь] (https://github.com/django/django/blob/master/django/contrib/admin/static/admin/js/admin/DateTimeShortcuts .js # L53) – okm

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