Неправильный виджет 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" %} />

но это не работает (когда я проверяю и сохраняю набор форм, он не сохраняется проверено). что именно происходит?

0 ответов

Другие вопросы по тегам