Неправильный виджет django в пользовательском виджете
Я новичок в Джанго. Я собираюсь использовать пользовательский виджет для флажка. Вот мой form.py:
class SupervisorForm(forms.Form):
is_manager = forms.BooleanField(label=_("manager"), required=False)
Я искал весь проект и понял, что эта форма отображается из этого файла: (forms/widgets/input.html) код:
<input type="{{ widget.type }}" name="{{ widget.name }}"{% if widget.value != None %} value="{{ widget.value|stringformat:'s' }}"{% endif %}{% include "django/forms/widgets/attrs.html" %} />
Теперь я создал собственный виджет с именем SwitchWidgetCheckboxInput
class SwitchWidgetCheckboxInput(ClearableFileInput):
template_name = 'utils/SwitchWidgetCheckboxInput.html'
@property
def media(self):
js = ("utils/switch_widget_checkbox_input/SwitchWidgetCheckboxInput.js",)
css = {'all': ("utils/switch_widget_checkbox_input/SwitchWidgetCheckboxInput.css",)}
return forms.Media(js=js, css=css)
def render(self, name, value, attrs=None, renderer=None):
"""
Returns this Widget rendered as HTML, as a Unicode string.
"""
context = self.get_context(name, value, attrs)
return self._render(self.template_name, context, renderer)
мои JS и CSS пустые в данный момент. и изменил form.py таким образом:
class SupervisorForm(forms.Form):
is_manager = forms.BooleanField(label=_("manager"), required=False, widget=SwitchWidgetCheckboxInput)
и скопировал тот же контент input.html в мой html виджета, но на удивление флажок превратился в файл ввода! Я использовал точку останова в своем html-виджете и понял, что widget.type - это файл, в то время как я использовал точку останова в input.html перед тем, как применить свой собственный расширенный флажок widget.type is.
Другое дело, что в моем виджете HTML я изменил
<input type="{{ widget.type }}" name="{{ widget.name }}"{% if widget.value != None %} value="{{ widget.value|stringformat:'s' }}"{% endif %}{% include "django/forms/widgets/attrs.html" %} />
в
<input type="checkbox" name="{{ widget.name }}"{% if widget.value != None %} value="{{ widget.value|stringformat:'s' }}"{% endif %}{% include "django/forms/widgets/attrs.html" %} />
но это не работает (когда я проверяю и сохраняю набор форм, он не сохраняется проверено). что именно происходит?