Что должен возвращать метод value_from_datadict виджета настраиваемой формы?

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

Я создаю свою собственную версию виджета с разделением даты и времени с использованием объектов JQuery, что должна возвращать каждая часть виджета? Должен ли виджет даты возвращать дату и время, а виджет времени - дату и время? Какой склеивающий код объединяет два значения вместе?

Почему в Python есть оператор "pass"?
Почему в Python есть оператор "pass"?
Оператор pass в Python - это простая концепция, которую могут быстро освоить даже новички без опыта программирования.
Некоторые методы, о которых вы не знали, что они существуют в Python
Некоторые методы, о которых вы не знали, что они существуют в Python
Python - самый известный и самый простой в изучении язык в наши дни. Имея широкий спектр применения в области машинного обучения, Data Science,...
Основы Python Часть I
Основы Python Часть I
Вы когда-нибудь задумывались, почему в программах на Python вы видите приведенный ниже код?
LeetCode - 1579. Удаление максимального числа ребер для сохранения полной проходимости графа
LeetCode - 1579. Удаление максимального числа ребер для сохранения полной проходимости графа
Алиса и Боб имеют неориентированный граф из n узлов и трех типов ребер:
Оптимизация кода с помощью тернарного оператора Python
Оптимизация кода с помощью тернарного оператора Python
И последнее, что мы хотели бы показать вам, прежде чем двигаться дальше, это
Советы по эффективной веб-разработке с помощью Python
Советы по эффективной веб-разработке с помощью Python
Как веб-разработчик, Python может стать мощным инструментом для создания эффективных и масштабируемых веб-приложений.
5
0
3 949
2
Перейти к ответу Данный вопрос помечен как решенный

Ответы 2

Ответ принят как подходящий

Для 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, которые, похоже, работают с простыми строками.

Другие вопросы по теме