django自定义date_field小部件由datepicker

时间:2013-12-08 18:44:18

标签: django datepicker django-widget

所以,我想使用名为datepicker的JS库作为表单中日期字段的模板。

我的自定义小部件代码只是呈现模板:

class MyDateWidget(SelectDateWidget):

    def render(self, name, value, attrs=None):
        template = loader.get_template('date_widget.html')
        return template.render(Context({}))

date_widget.html 包含以下内容

<div class="input-append date" id="dp-input1" data-date-format="dd-mm-yyyy">
  <input class="span12" size="16" type="text" value="12-02-2012" readonly="">
  <span class="add-on"><i class="icon-calendar" onclick="$('#dp-input1').datepicker();"></i></span>
</div>

这个html有点好,我可以在我的页面中看到漂亮的popup datepicker菜单,但由于某种原因request.POST(此表单发布,是)并不包含选择的日期。其他字段显示在POST数据中。

显然我的小部件错过了一些重要的“后端”逻辑。

1 个答案:

答案 0 :(得分:0)

虽然这个问题很老,但我认为你必须将name属性添加到输入标记:

class MyDateWidget(SelectDateWidget):

def render(self, name, value, attrs=None):
    template = loader.get_template('date_widget.html')
    return template.render(Context({'name': name}))

<div class="input-append date" id="dp-input1" data-date-format="dd-mm-yyyy">
    <input class="span12" size="16" type="text" name="{{ name }}" value="12-02-2012" readonly="">
    <span class="add-on"><i class="icon-calendar" onclick="$('#dp-input1').datepicker();"></i></span>
</div>