Добавление атрибута bind к полю формы django cirspy

Я пытался добавить директиву alpine js, которая является x-bind:attr, в поле формы crispy, но я не смог найти решение, которое работает, я знаю, что атрибуты с тире обрабатываются с помощью подчеркивания, я пытался сделать то же самое, заменив двойное подчеркивание на двойное двоеточие, но это не сработало, и замена не производится.

class ChildFormSetHelperUpdate(FormHelper):
    def __init__(self, *args, **kwargs):
        super().__init__(*args, **kwargs)
        self.form_tag = False
        self.include_media = False
        self.layout = Layout(
            Div(
                Div(Field('model', x_bind__disable="disableInput"),
                    css_class='col-md-6'),
                Div(Field('model_option'), css_class='col-md-6'),
                Div(Field('DELETE', css_class='input-small'),
                    css_class="delete_row"),
                HTML(
                    '<div class="row mt--2"><div class="col-md-6"><button type="button" class="btn btn-danger btn-sm text-white" x-on:click="hideForm($el,target)">Delete</button></div></div>'),
                css_class=f"row formset")
        )
        self.attrs.update(dict(
            [((k.replace('__', ':')), conditional_escape(v)) for k, v in kwargs.items()]))
        self.render_required_fields = True```

Вы можете достичь этого, передавая аргумент ключевого слова в словаре и расширяя его в kwargs для Field с помощью ** оператора распаковки :

Field('model', **{"x-bind:disable": "disableInput"})

Это позволяет обойти тот факт, что в именах переменных Python нельзя использовать тире и двоеточия. Атрибут будет отображен как:

<input ... x-bind:disable="disableInput">
Вернуться на верх