如何在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页面上打开问题 ,而不是在这里发表评论。