Я пытаюсь создать свои собственные виджеты формы django (помещая их в widgets.py в каталоге моего проекта). Что должно вернуть значение value_from_datadict ()? Возвращает ли он строку или фактическое ожидаемое значение поля?
Я создаю свою собственную версию виджета с разделением даты и времени с использованием объектов JQuery, что должна возвращать каждая часть виджета? Должен ли виджет даты возвращать дату и время, а виджет времени - дату и время? Какой склеивающий код объединяет два значения вместе?






Для value_from_datadict() вы хотите вернуть ожидаемое значение или None. Источник в django / формы / widgets.py предоставляет несколько примеров.
Но вы должны иметь возможность создать виджет DatePicker, просто предоставив метод render:
DATE_FORMAT = '%m/%d/%y'
class DatePickerWidget(widgets.Widget):
def render(self, name, value, attrs=None):
if value is None:
vstr = ''
elif hasattr(value, 'strftime'):
vstr = datetime_safe.new_datetime(value).strftime(DATE_FORMAT)
else:
vstr = value
id = "id_%s" % name
args = [
"<input type=\"text\" value=\"%s\" name=\"%s\" id=\"%s\" />" % \
(vstr, name, id),
"<script type=\"text/javascript\">$(\"#%s\").datepicker({dateFormat:'mm/dd/y'});</script>" % id
]
return mark_safe("\n".join(args))
Источник Django говорит
Given a dictionary of data and this widget's name, returns the value of this widget. Returns None if it's not provided.
Читая код, я вижу, что отдельные виджеты даты и времени Django являются подклассами Input, подклассами Widget, которые, похоже, работают с простыми строками.