Как заменить все строки-заполнители __prefix__ в элементах empty_form набора Django Formsets, используя только Javascript?

Наборы форм Django имеют атрибут empty_form.

empty_form

.

BaseFormSet предоставляет дополнительный атрибут empty_form который возвращает экземпляр формы с префиксом __prefix__ для более легкого использования в динамических формах с JavaScript.

В документации Django не сказано, как заменить __prefix__ на Javascript. Несколько онлайн примеров показывают, как сделать это с помощью jQuery, но я конкретно хочу сделать это с помощью Javascript - без jQuery.

Вот результирующий HTML из моего {{ formset.empty_form }}:

<div id="prerequisiteEmptyForm">
    <input type="text" name="prerequisites-__prefix__-text" maxlength="100" id="id-prerequisites-__prefix__-text">
    <label for="id-prerequisites-__prefix__-DELETE">Delete:</label>
    <input type="checkbox" name="prerequisites-__prefix__-DELETE" id="id-prerequisites-__prefix__-DELETE">
    <input type="hidden" name="prerequisites-__prefix__-id" id="id-prerequisites-__prefix__-id">
    <input type="hidden" name="prerequisites-__prefix__-content" value="21" id="id-prerequisites-__prefix__-content">
</div>

Везде, где отображается __prefix__, я хочу заменить его на число... скажем, 321.

Правильное решение:

<div id="prerequisiteEmptyForm">
    <input type="text" name="prerequisites-321-text" maxlength="100" id="id-prerequisites-321-text">
    <label for="id-prerequisites-321-DELETE">Delete:</label>
    <input type="checkbox" name="prerequisites-321-DELETE" id="id-prerequisites-321-DELETE">
    <input type="hidden" name="prerequisites-321-id" id="id-prerequisites-321-id">
    <input type="hidden" name="prerequisites-321-content" value="21" id="id-prerequisites-321-content">
</div>

Так что мой вопрос становится

Используя только Javascript, как заменить постоянное значение ("__prefix__") на другое ("321") в нескольких элементах (inputs и labels) в нескольких атрибутах (name, id)? В частности, я хочу сделать это чисто для повторяемости. Мне не нужно индивидуальное решение для этой конкретной проблемы. Это должен быть общий подход... поскольку речь идет о замене константы, наверняка в Javascript есть чистый способ сделать это? Я все еще изучаю Javascript и пытаюсь не быть настолько зависимым от jQuery.

Это работает?

const emptyForm = document.querySelector('#prerequisiteEmptyForm');
clone = emptyForm.cloneNode(deep=true);
clone.innerHTML = clone.innerHTML.replace(/__prefix__/g, '321');
Вернуться на верх