Дублирование атрибутов формы в div '.controls' при использовании виджета CheckboxSelectMultiple с Crispy Forms

У меня есть форма, предназначенная для фильтрации результатов в представлении списка. Я использую HTMX для отправки GET запроса при каждом изменении формы, и я использую Crispy Forms для рендеринга формы (включая атрибуты hx в теге <form>).

Я уже много раз использовал этот шаблон без проблем, но на этой конкретной форме я хочу использовать виджет CheckboxSelectMultiple. Когда форма отображается, атрибуты hx, которые я применяю к тегу <form>, дублируются в теге <div class="controls">, который содержит флажки.

Форма

class MyListFilterForm(forms.Form):
    status = forms.MultipleChoiceField(choices=MyModel.STATUS_CHOICES, required=False,
                                       widget=forms.CheckboxSelectMultiple)

    def __init__(self, *args, **kwargs):
        super().__init__(*args, **kwargs)

        self.helper = FormHelper()
        self.helper.form_method = 'GET'
        self.helper.disable_csrf = True
        self.helper.attrs = {
            'hx_get': reverse('myapp:my_view'),
            'hx_trigger': 'change',
            'hx_target': '#my_table_body',
        }

Rendered HTML

<form hx-get="/path/to/view/" hx-target="#my_table_body" hx-trigger="change" method="get">

   <div id="div_id_status" class="control-group">

      <label for="" class="control-label ">
          Status
      </label> 

      <div class="controls" hx-get="/path/to/view/" hx-target="#my_table_body" hx-trigger="change"> 

         <label class="checkbox" for="id_status_0"><input type="checkbox" name="status" id="id_status_0" value="1">Choice 1</label> 
         <label class="checkbox" for="id_status_1"><input type="checkbox" name="status" id="id_status_1" value="2">Choice 2</label> 
         <label class="checkbox" for="id_status_2"><input type="checkbox" name="status" id="id_status_2" value="3">Choice 3</label> 

      </div>
   </div>
</form>

Это дублирование атрибутов hx приводит к тому, что запрос HTMX срабатывает дважды при нажатии на один из этих флажков. Мало того, первый запрос выполняется без данных формы, что также приводит к неправильным результатам.

Если я удалю виджет CheckboxSelectMultiple и позволю использовать виджет по умолчанию SelectMultiple, то проблемы нет и все работает нормально, но CheckboxSelectMultiple является желаемым виджетом для этой формы.

Я знаю, что могу отобразить форму вручную в шаблоне, или, возможно, сделать некоторую пользовательскую обработку событий HTMX, чтобы остановить первый запрос, но в идеале я хотел бы просто выяснить, как отобразить форму через Crispy Forms без получения дублирующих атрибутов.

Я использую Django 3.2.7 и Crispy Forms 1.13.0

Вернуться на верх