Я использую django-bootstrap3
(pip install django-bootstrap3
) стороннее приложение для рендеринга форм. Я использую приложение django-bootstrap-datepicker
(pip install django-bootstrap-datepicker
) для применения календаря виджетов.
В следующей форме у меня есть два поля: check_in
и check_out
, к которым я хочу применить средство выбора даты вместе.
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 %}
И когда я пытаюсь отобразить свою форму, эффект выбора даты применяется только к первому полю, отображаемому в форме, это означает, что только поле check_in
имеет эффект выбора даты, а поле check_out
его не имеет.
- Проверить в поле
- Проверить поле
ОБНОВЛЕНИЕ
Я выполняю проверку в своем браузере и обнаружил, что поля check_in
и check_out
имеют одинаковый идентификатор _pickers
и вызов кода JS для первого найденного _pickers
.
Как я могу изменить идентификатор каждого поля с тем, чтобы виджет работал вместе с полями?