如何在Django应用程序中使用bootstrap-datepicker?

我想在我的django应用程序中使用bootstrap-datepicker( https://bootstrap-datepicker.readthedocs.org )。 我使用Django 1.7。

在index.html文件中我有:

      $(document).ready(function(){ $('.datepicker').datepicker(); });  

在我的forms.py中,我有:

 class Filter(django_filters.FilterSet): class Meta: model = MyModel fields = ['user', 'date_from', 'date_to'] widgets = {'date': forms.DateInput(attrs={'class':'datepicker'})} 

我的model.py用于设置日期:

 date_from = models.DateField() date_to = models.DateField() 

当我浏览带有日期的页面时 – 在输入区域中不起作用。

更新:警告,此建议使用dateTIMEpicker而不是datepicker。 我建议这样做是因为你不必使用datetimepicker的时间function,所以在我的情况下它非常方便。

由于我一直试图让datetimepicker工作(与模型表单结合)很长一段时间,我想我会发布解决方案,感觉就像是关于这个主题的所有stackoverflowpost的积累;)

所以,首先,确保还包括moment.js ,因为bootstrap-datetimepicker需要它(请参阅此stackoverflow文章 )。 订单很重要,请参阅上述post。

然后使用此站点获取所需的datetimepicker类型。 如果您没有要在其中嵌入datetimepicker的模型表单,那么只需将其复制到您的html代码中即可。

如果你想让你的一个模型表单字段像我一样做一个花哨的datepicker(没有时间)字段,那么执行以下操作:

base.html文件

    

forms.py

 class MyForm(forms.ModelForm): class Meta: ... widgets = {'myDateField': forms.DateInput(attrs={'id': 'datetimepicker12'})} ... 

myForm.html:

 
... {% bootstrap_form form %} ...

我希望我能节省你一些时间:)

我经历过类似的问题。 您需要在任何自定义jquery文件之前调用jquery min文件。 所以你的代码看起来像这样。

       

我知道这在几个月内没有得到解答,但是想发布这个只是为了确保这可以帮助其他任何人。

虽然有一个python包似乎很好地解决了这个问题,但我选择看看是否可以使用Django的widget类来使datepicker工作,以呈现文档中提到的datepicker属性。

注意,我只使用日期字段而不是日期时间字段,因为我不需要我的应用程序来支持此实例中的时间。

models.py

 class MyModel(models.Model): ... date = models.DateField() ... 

forms.py

 class MyForm(forms.Form): ... ''' Here I create a dict of the HTML attributes I want to pass to the template. ''' DATEPICKER = { 'type': 'text', 'class': 'form-control', 'id': 'datetimepicker4' } # Call attrs with form widget date = forms.DateField(widget=forms.DateInput(attrs=DATEPICKER)) ... 

template.html

 
{{ form.date }}

JS

 $(function () { $('#datetimepicker1').datetimepicker({ format: 'YYYY-MM-DD' //This is the default date format Django will accept, it also disables the time in the datepicker. }) }); 

对于DJango版本2.1,2.0,1.11,1.10和1.8

要在Django app安装django-bootstrap-datepicker-plus中使用Bootstrap日期选择器,请按照GitHub页面上的安装说明对其进行配置,然后您可以在Custom Forms和Model Forms中使用它,如下所示。

自定义表单中的用法:

 from bootstrap_datepicker_plus import DatePickerInput class ToDoForm(forms.Form): user = forms.CharField() date_from = forms.DateField(widget = DatePickerInput()) 

模型表格中的用法

 from bootstrap_datepicker_plus import DatePickerInput class MyForm(forms.ModelForm): class Meta: model = MyModel fields = ['user', 'date_from', 'date_to'] widgets = { 'date_form': DatePickerInput(), 'date_to': DatePickerInput() } 

使用django-filters:

 from bootstrap_datepicker_plus import DatePickerInput class Filter(django_filters.FilterSet): class Meta: model = MyModel fields = ['user', 'date_from', 'date_to'] widgets = {'date': DatePickerInput()} 

免责声明: 这款django套餐由我维护。 对于任何问题,请在Github页面上打开问题 ,而不是在这里发表评论。