5

我正在尝试构建自己的自定义 django 表单小部件(将它们放在我的项目目录的 widgets.py 中)。值“value_from_datadict()”应该返回什么?它是返回一个字符串还是该字段的实际预期值?

我正在使用 JQuery 对象构建我自己的拆分日期/时间小部件版本,小部件的每个部分应该返回什么?日期小部件是否应该返回一个日期时间,而时间小部件是否应该返回一个日期时间?什么胶水代码将这两个值合并在一起?

4

2 回答 2

5

因为value_from_datadict()您想返回您期望的值或无。django/forms/widgets.py中的源代码提供了一些示例。

但是你应该能够通过提供一个render方法来构建一个 DatePicker 小部件:

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))
于 2009-01-12T22:56:34.113 回答
0

Django 消息来源说

给定一个数据字典和这个小部件的名称,返回这个小部件的值。如果未提供,则返回 None。

阅读代码,我看到 Django 的单独日期和时间小部件都是 Input 的子类,Widget 的子类,它似乎与简单的字符串一起工作。

于 2009-01-12T22:58:27.823 回答