如何在Django模型中包含datepicker?

时间:2016-03-29 19:08:50

标签: javascript jquery python django datepicker

我已经看过关于这个主题的所有问题,但我无法解决我的问题,我的错误是:“TypeError:$(...)。datepicker不是函数”

这是我的代码:

HTML

.....

<script type="text/javascript" src="{{ STATIC_URL }} /static/bootstrap/js/jquery-1.11.3.min.js">
</script> 

<link rel="stylesheet" type="text/css" href="/static/bootstrap/css/jquery-ui.css">

<link rel="stylesheet" type="text/css" href="/static/bootstrap/css/estilo.css">

<script type="text/javascript" src="{{ STATIC_URL }} /static/bootstrap/js/jquery-ui.js">
</script>

<script type="text/javascript">
$(document).ready(function() {
   $('.datepicker').datepicker();
});
</script>

<div class="form-group">

    <label for="nacimiento" class="control-label col-md-2">Nacimiento:</label>
    <div class="col-md-8">
        <input class="form-control" id="datepicker" name="nacimiento" type="text" />
    </div>
</div>

....

在html代码中我拥有所有表单以及让页面运行的所有内容...我只是复制了Datepicker的重要代码

views.py

def registrarpaciente(request):
    if request.POST:
        form = PacienteForm(request.POST)
        if form.is_valid():
            mydate = form.cleaned_data('data_input') #I have agree this codeline just recently by looking another questions
            form.save()

            return render_to_response('ABME/Notificaciones/pregistrado.html')
    else:
        form = PacienteForm()

    args = {}
    args.update(csrf(request))

    args['form'] = form

    return render_to_response('ABME/Paciente/registrarpaciente.html', args)

form.py

from django import forms
from aplicacion.models import *
from functools import partial

DateInput = partial(forms.DateInput, {'class': 'datepicker'})

class PersonaForm(forms.ModelForm):
    class Meta:
        model = Persona
        exclude=()

class PacienteForm(forms.ModelForm):    
    class Meta:
        model = Paciente
        data_input = forms.DateField(widget=forms.DateInput(attrs={'class':'datepicker'}))
        exclude=()  

我不知道如果我没有正确调用小部件或其他东西,脚本被调用,我已经在firebug中检查过,这不是问题.. plz help!

5 个答案:

答案 0 :(得分:0)

文件可能不存在。

enter image description here

试试这个。

{% load static %}
<script src="{% static 'bootstrap/js/jquery-ui.js' %}"></script>

该文件需要权限

答案 1 :(得分:0)

如果您的data_input字段是模型字段,请使用:

class PacienteForm(forms.ModelForm):    
    class Meta:
        model = Paciente
        exclude=()  
        widgets = {
            'data_input': forms.DateInput(attrs={'class': 'datepicker', 'id': 'data_input'})
        }

如果它不是模型字段,请使用:

class PacienteForm(forms.ModelForm):    
     data_input = forms.DateField(widget=forms.DateInput(attrs={'class':'datepicker'}))
     class Meta:
         model = Paciente
         exclude=()  

答案 2 :(得分:0)

尝试在html中包含这个:

<script src="http://ajax.googleapis.com/ajax/libs/jqueryui/1.8/jquery-ui.min.js"></script>

答案 3 :(得分:0)

使用Bootstrap DateTime Picker而是指定此格式。请检查以下代码。

$('id/class name').datetimepicker({
            minDate: new Date(),
            locale: 'en',
            format: 'MM/DD/YYYY'
        });

答案 4 :(得分:0)

只是为了其他寻求答案的人的利益。

如果您只需要一个基本的日期选择器而不热衷于 js 或 jquery,请尝试 DateInput 提供的 django.forms 小部件。这是一个示例代码。

from django.forms import Form, ModelForm, DateField, widgets
from iac.models import Packaging, Purchase, Sale


class AddSaleForm(ModelForm):
    class Meta:
        model = Sale
        fields = '__all__'
        exclude = ()
        widgets = {
            'order_date': widgets.DateInput(attrs={'type': 'date'})
        }

使用纯 Form 的示例

class ReportForm(Form):
    from_date = DateField(label="From Date", widget=widgets.DateInput(attrs={'type': 'date'}))
    to_date = DateField(label="To Date", widget=widgets.DateInput(attrs={'type': 'date'}))

P.S 您需要确保正确设置视图和模板。这是一个适用于 bootstrapdjango.views 的代码示例。