这是我的登记表。可笑的日期格式使我能够区分我的定制格式和更通用的格式
型号.py
class User(AbstractBaseUser):
d_o_b = models.DateField(default=timezone.now()-datetime.timedelta(days=6570))
6570是18*365
forms.py
widgets = {'d_o_b': BootstrapDateTimePickerInput(format='%d/%d/%m/%m/%m/%m/%Y', attrs={'class':'datepicker-start'})}
当我更改日期时,日期格式将更改为美式格式
更改日期时,我希望保留自定义格式。我还想阻止用户选择2000年之前的日期
boostrap\u datetimepicker.html
这是默认代码(减去我修改的日期格式)。
{% include "django/forms/widgets/input.html" %}
<div class="input-group-append" data-target="#{{ widget.datetimepicker_id }}" data-toggle="datetimepicker">
<div style='background-color:blue' class="input-group-text"><i class="fa fa-calendar"></i></div>
</div>
</div>
<script>
$(function () {
$("#{{ widget.datetimepicker_id }}").datetimepicker({
format: 'DD/DD/MM/MMM/YYYY/',
});
});
</script>
我以为每次选择日期时widget.datetimepicker_id
函数都会运行。我以为你用这个函数来确定你的日期在屏幕上的显示方式。但是这个函数似乎只有在您第一次加载页面时,并且只有当d_o_b有一个默认值时才有效
如果你有(a)
widgets = {'d_o_b': BootstrapDateTimePickerInput(format='%d/%d/%m/%m/%m/%m/%Y', attrs={'class':'datepicker-start'})}
反对(b)
widgets = {'d_o_b': BootstrapDateTimePickerInput()}
那么函数widget.datetimepicker_id
似乎也没有效果
我把密码改成
<script>
$(function () {
$("#{{ widget.datetimepicker_id }}").datetimepicker({
format: 'DD/DD/MM/MMM/YYYY/',
changeMonth: false,
changeYear: true,
yearRange: "2005:2012"
});
});
</script>
不幸的是,我仍然能够选择2005年之前的日期,2012年之后的日期,并更改月份
在正常情况下,我希望用户能够更改月份,但我试图看看什么(如果有的话)代码对我的小部件有影响
在forms.py中,我有attrs={'class':'datepicker-start'})
。我将下面的代码添加到boostrap_datetimepicker.html中,但它似乎对用户可以选择的日期没有影响
<script>
$(function() {
$(".datepicker-start" ).datepicker({
changeMonth: false,
changeYear: true,
yearRange: "2005:2012",
// more options can also be included
});
$(".datepicker-end" ).datepicker({
changeMonth: true,
changeYear: true,
yearRange: "1900:2012",
});
});
</script>
我把datepicker
改为datetimepicker
,这似乎也没有什么影响
我还尝试将data-target="#{{ widget.datetimepicker_id }}"
更改为data-target="datepicker-start"
。这似乎也没有任何影响
widgets.py
from django.forms import DateTimeInput
class BootstrapDateTimePickerInput(DateTimeInput):
template_name = 'widgets/bootstrap_datetimepicker.html'
def get_context(self, name, value, attrs):
datetimepicker_id = 'datetimepicker_{name}'.format(name=name)
if attrs is None:
attrs = dict()
attrs['data-target'] = '#{id}'.format(id=datetimepicker_id)
# attrs['data-target'] = '#{id}'.format(id=datetimepicker_id)
attrs['class'] = 'form-control datetimepicker-input'
context = super().get_context(name, value, attrs)
context['widget']['datetimepicker_id'] = datetimepicker_id
return context
我不知道我是否离实现我的目标还有一段距离。我现在很困惑。如果有人能给我一些指导,我将不胜感激
我看了一下开发工具。我感兴趣的元素具有id。因此,我将jQuery更改为以下内容,但没有任何效果
<script>
$(function () {
$("#id_d_o_b").datetimepicker({
format: 'DD/DD/MM/MMM/YYYY/',
changeYear: true,
yearRange: "2005:2012"
});
});
</script>
目前没有回答
相关问题 更多 >
编程相关推荐