Добавление onclick в поле, которое создается при добавлении can_delete в набор форм

Как добавить onclick="functionName()" к полю, которое создается при использовании can_delete=True в formset? <input type="checkbox" name="form-0-DELETE" id="id_form-0-DELETE" onclick="functionName()">

Вы можете сделать это многими способами:

переопределение атрибута formset.deletion_widget

class MyFormSet(django.forms.Formset):
    deletion_widget = CheckboxInput(attrs={'onclick':"functionName()})
    ...

переопределить метод класса formset.def get_deletion_widget

class MyFormSet(django.forms.Formset):
    ...
    @classmethod
    def get_deletion_widget(cls):
        response = super().get_deletion_widget()
        response.attrs = getattr(response, 'attrs', {}) | {'onclick':"functionName()}
        return response

переопределить метод экземпляра add_fields

class MyFormSet(django.forms.Formset):
    ...
    def add_fields(self, form, index):
        super().add_fields(form, index)
        if DELETION_FIELD_NAME in form.fields:
            widget = form.fields[DELETION_FIELD_NAME].widget
            widget.attrs = getattr(widget, 'attrs', {}) | {'onclick':"functionName()}

Вы можете переопределить form.fields на form.init, form.fields на render, template with form on render. Много способов сделать это.

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