3

我想为我的 Django 项目使用这个日期范围选择器

问题是我不知道在服务器端(Django)我必须做什么?

可能是创建某种小部件?

可能是子类widgets.MultiWidget?

我认为这个小部件必须表现得像两个 DateTimeFields?

Django可以做到这一点吗?

4

2 回答 2

8

我必须这样做;所以我在这里分享代码。它基本上重用了 Django DateField

class DateRangeField(forms.DateField):
    def to_python(self, value):
        values = value.split(' - ')
        from_date = super(DateRangeField, self).to_python(values[0])
        to_date = super(DateRangeField, self).to_python(values[1])
        return from_date, to_date

date_range = DateRangeField(required=False,
                            widget=forms.TextInput(attrs={'placeholder': _('from'),
                                                          'class': 'form-control datepicker'}))
于 2014-06-05T16:32:44.913 回答
2

鉴于示例输出是

MM/DD/YYYY - MM/DD/YYYY

这将发布到您的视图中。我会自己处理而不是使用 Django 表单,并将其存储在两个 DateFields 中。类似这样的东西:

date_range = request.POST['date_range']
start_date_string = date_range.split(' - ')[0]
end_date_string = date.range.split(' - ')[1]

这将为您提供所需的两个字符串,然后只需将它们传递到 DateFields 并保存即可。

于 2013-03-20T14:31:17.543 回答