如何在 Django 模型中包含日期选择器?
Posted
技术标签:
【中文标题】如何在 Django 模型中包含日期选择器?【英文标题】:How to include datepicker in Django modelform? 【发布时间】: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 代码中)
jQuery UI " $("#datepicker").datepicker is not a function"的可能重复
如果您有一个名为nacimiento
的字段,您所要做的就是为该输入元素分配一个名为 datepicker 的类。它会解决问题。
输入中的一个类? ..它仍然存在同样的问题,datepicker 不是一个函数......可能它缺少脚本或 css?
【参考方案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 您需要确保正确设置视图和模板。这是一个适用于bootstrap
和django.views
的代码示例。
【讨论】:
以上是关于如何在 Django 模型中包含日期选择器?的主要内容,如果未能解决你的问题,请参考以下文章