【问题标题】:How to include datepicker in Django modelform?如何在 Django 模型中包含日期选择器?
【发布时间】:2016-07-17 12:36:59
【问题描述】:

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

这是我的代码:

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,所以这不是问题.. 请帮助!

【问题讨论】:

  • data_input 属性真的应该在 Meta 类下还是您希望它显示为表单字段?
  • 我只想将表单字段作为日历,我把它放在那里因为我不知道还能做什么......只是看到其他人的问题......我必须输入日期的字段被称为“nacimiento”(在 html 代码中)
  • 如果您有一个名为nacimiento 的字段,您所要做的就是为该输入元素分配一个名为 datepicker 的类。它会解决问题。
  • 输入中的一个类? ..它仍然存在同样的问题,datepicker 不是一个函数......可能它缺少脚本或 css?

标签: javascript jquery python django datepicker


【解决方案1】:

文件可能不存在。

试试这个。

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

并且文件需要权限

【讨论】:

  • 那不是问题..它一直给我这个错误:“TypeError: $(...).datepicker is not a function”
  • 我认为这不是问题.. 我已经检查了 firebug 并且调用了脚本和 css,我可以进入它们。
  • 我生成错误(答案图片)删除文件
  • 我已经解决了伙计们!问题是我的 datepicker 版本是最近的,我下载了另一个版本,它运行了 sssssssss :D 谢谢
【解决方案2】:

如果您的 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=()  

【讨论】:

    【解决方案3】:

    尝试将其包含在您的 html 中:

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

    【讨论】:

      【解决方案4】:

      使用 Bootstrap DateTime Picker 代替并指定此格式。检查下面的代码。

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

      【讨论】:

        【解决方案5】:

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

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

        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 的代码示例。

        【讨论】:

          猜你喜欢
          • 2023-03-26
          • 2018-05-19
          • 1970-01-01
          • 2021-11-20
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 2012-06-15
          • 1970-01-01
          相关资源
          最近更新 更多