如何为 Django 表单上的 date-picker 字段分配唯一 ID?
How to assign a unique ID to date-picker fields on django form?
我正在使用 django-bootstrap3
(pip install django-bootstrap3
) 第三方应用程序来呈现表单。我正在使用 django-bootstrap-datepicker
(pip install django-bootstrap-datepicker
) 应用程序来应用小部件日历。
在下面的表格中,我有两个字段:check_in
和 check_out
我想一起应用 date-picker
from bootstrap_datepicker.widgets import DatePicker
class DateInput(DatePicker):
def __init__(self):
DatePicker.__init__(self,format="%Y-%m-%d")
def build_attrs(self, attrs, extra_attrs=None, **kwargs):
attrs = dict(self.attrs, **kwargs)
if extra_attrs:
attrs.update(extra_attrs)
return attrs
class LodgingOfferForm(forms.ModelForm):
class Meta:
widgets = {
'check_in': DateInput(),
'check_out': DateInput(),
}
model = LodgingOffer
fields = ('other fields', 'check_in', 'check_out', )
在html模板上我是这样渲染表单的,包括form.media
接受js和css效果bootstrap-datepicker
:
{% load bootstrap3 %}
{% block body_content %}
{% block extrahead %} {# Extra Resources Start #}
{{ form.media }} {# Form required JS and CSS #}
{% endblock %}
{% bootstrap_field form.check_in %}
{% bootstrap_field form.check_out %}
{% endblock %}
当我尝试呈现我的表单时,date-picker 效果仅适用于表单中呈现的第一个字段,这意味着只有 check_in
字段具有 date-picker 效果check_out
字段没有。
- 签到字段
- 签出字段
更新
我在浏览器中执行检查,发现 check_in
和 check_out
字段具有相同的 ID _pickers
并且 JS 代码调用第一个 _pickers
找到了。
签到
查看
如何修改每个字段的 ID,以便小部件与字段一起工作?
我已经这样修改了id pickers
:
class LodgingOfferForm(forms.ModelForm):
class Meta:
widgets = {
'check_in': DateInput(),
'check_out': forms.DateInput(attrs={'id': 'datepicker2'}),
'country': CountrySelectWidget(),
}
model = LodgingOffer
fields = ('check_in', 'check_out', )
并且在我的模板中,我以这种方式重写或调用 datepicker
函数:
<script type="text/javascript">
$(function () {
$('#datepicker2').datepicker({
inline: true,
sideBySide: true,
// format: 'DD.MM.YYYY'
});
});
</script>
通过这种方式,我可以看到不同的 ID,并且我的日历选择器可以一起在字段中工作
我正在使用 django-bootstrap3
(pip install django-bootstrap3
) 第三方应用程序来呈现表单。我正在使用 django-bootstrap-datepicker
(pip install django-bootstrap-datepicker
) 应用程序来应用小部件日历。
在下面的表格中,我有两个字段:check_in
和 check_out
我想一起应用 date-picker
from bootstrap_datepicker.widgets import DatePicker
class DateInput(DatePicker):
def __init__(self):
DatePicker.__init__(self,format="%Y-%m-%d")
def build_attrs(self, attrs, extra_attrs=None, **kwargs):
attrs = dict(self.attrs, **kwargs)
if extra_attrs:
attrs.update(extra_attrs)
return attrs
class LodgingOfferForm(forms.ModelForm):
class Meta:
widgets = {
'check_in': DateInput(),
'check_out': DateInput(),
}
model = LodgingOffer
fields = ('other fields', 'check_in', 'check_out', )
在html模板上我是这样渲染表单的,包括form.media
接受js和css效果bootstrap-datepicker
:
{% load bootstrap3 %}
{% block body_content %}
{% block extrahead %} {# Extra Resources Start #}
{{ form.media }} {# Form required JS and CSS #}
{% endblock %}
{% bootstrap_field form.check_in %}
{% bootstrap_field form.check_out %}
{% endblock %}
当我尝试呈现我的表单时,date-picker 效果仅适用于表单中呈现的第一个字段,这意味着只有 check_in
字段具有 date-picker 效果check_out
字段没有。
- 签到字段
- 签出字段
更新
我在浏览器中执行检查,发现 check_in
和 check_out
字段具有相同的 ID _pickers
并且 JS 代码调用第一个 _pickers
找到了。
签到
查看
如何修改每个字段的 ID,以便小部件与字段一起工作?
我已经这样修改了id pickers
:
class LodgingOfferForm(forms.ModelForm):
class Meta:
widgets = {
'check_in': DateInput(),
'check_out': forms.DateInput(attrs={'id': 'datepicker2'}),
'country': CountrySelectWidget(),
}
model = LodgingOffer
fields = ('check_in', 'check_out', )
并且在我的模板中,我以这种方式重写或调用 datepicker
函数:
<script type="text/javascript">
$(function () {
$('#datepicker2').datepicker({
inline: true,
sideBySide: true,
// format: 'DD.MM.YYYY'
});
});
</script>
通过这种方式,我可以看到不同的 ID,并且我的日历选择器可以一起在字段中工作