如何在datefield上显示datepicker日历

Mon*_*k L 26 django django-models

这是关于如何date picker在django驱动的站点中使用jQuery .

models.py

from django.db import models
class holidaytime(models.Model):
    holiday_date = models.DateField()
Run Code Online (Sandbox Code Playgroud)

我在用jquery datepicker.

我正在使用a model form并创建text field成功显示日期.

但未能显示datepicker图标.我正在使用Django模型表单.

Ami*_*dav 37

您可以使用它在将在html中呈现时widget传递class给表单.然后class将通过javascript渲染datepicker函数来读取.

这是一个例子:

from django import forms
class HolidayTimeForm(forms.Form):
    holiday_date = forms.DateField(widget=forms.TextInput(attrs=
                                {
                                    'class':'datepicker'
                                }))
Run Code Online (Sandbox Code Playgroud)

...或者widgets在使用ModelForm时通过Meta类中的属性:

class HolidayTimeForm(forms.ModelForm):

    class Meta:
        model = Holiday
        widgets = {
            'holiday_date': forms.DateInput(attrs={'class':'datepicker'}),
        }
Run Code Online (Sandbox Code Playgroud)

现在在模板中:

 /* Include the jquery Ui here */
 <script>
  $(function() {
    $( ".datepicker" ).datepicker({
      changeMonth: true,
      changeYear: true,
      yearRange: "1900:2012",
      // You can put more options here.

    });
  });
  </script>
Run Code Online (Sandbox Code Playgroud)

  • 你可能应该使用一个类,而不是id.如果您在页面上有多个此表单的副本,或者在同一表单中有两个日期,该怎么办? (3认同)

小智 13

你可以使用Bootstrap-datetimepicker(而不是datepicker),这是一个例子:

  1. 在模板中添加必要的脚本和文件:

<link href="//cdn.bootcss.com/bootstrap/3.3.7/css/bootstrap.min.css" rel="stylesheet">
<link href="//cdn.bootcss.com/bootstrap-datetimepicker/4.17.44/css/bootstrap-datetimepicker.min.css" rel="stylesheet">
<script src="//cdn.bootcss.com/jquery/3.0.0/jquery.min.js"></script>
<script src="//cdn.bootcss.com/bootstrap/3.3.7/js/bootstrap.min.js"></script>
<script src="//cdn.bootcss.com/moment.js/2.17.1/moment.min.js"></script>
<script src="//cdn.bootcss.com/bootstrap-datetimepicker/4.17.44/js/bootstrap-datetimepicker.min.js"></script>
Run Code Online (Sandbox Code Playgroud)

  1. 使用小部件将class/id添加到datetime字段:

    class MyTaskForm(forms.ModelForm):
    class Meta:
       model = MyTask
    fields = ['completeDateTime']
    widgets = {
        'completeDateTime': forms.DateTimeInput(attrs={'class': 'datetime-input'})
    }
    
    Run Code Online (Sandbox Code Playgroud)
  2. 将脚本添加到您的template/html文件中:(注意格式,导入使用相同格式的Django)

<script>
    $(function () {
        $('.datetime-input').datetimepicker({
            format:'YYYY-MM-DD HH:mm:ss'
        });
    });
</script>
Run Code Online (Sandbox Code Playgroud)