Добавление атрибута 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">