@sazhyk

Как создавать формы в django formset на javascript?

Прошу помощи в проблеме создания дополнительных полей в django formset.
Те кто работает с Django, знают, что есть наборы форм. На странице их можно создавать динамически, но с определенными id. То есть:
form.html
<form action="." method="post" class="recipe_form">
    <input type='hidden' name='csrfmiddlewaretoken' value='6c8MxA6cAjA2a75H7QbATliuBwO8Xy1xl4JNgga4FUVpQruRCYMSolZJY2eSdCYn' />
    <div>
        <div style="margin: 5px">
            <div class="">
                <label for="id_name">Name:</label>
                <input id="id_name" maxlength="100" name="name" type="text" required />
            </div>
        </div>
        <div style="margin: 5px">
            <div id="management-form">
                <input id="id_book_set-TOTAL_FORMS" name="book_set-TOTAL_FORMS" type="hidden" value="1" />
                <input id="id_book_set-INITIAL_FORMS" name="book_set-INITIAL_FORMS" type="hidden" value="0" />
                <input id="id_book_set-MIN_NUM_FORMS" name="book_set-MIN_NUM_FORMS" type="hidden" value="0" />
                <input id="id_book_set-MAX_NUM_FORMS" name="book_set-MAX_NUM_FORMS" type="hidden" value="10" />
            </div>
            <div id="formset">
                <div class="formset-item" id="formset-item-0">
                    <label for="id_book_set-0-title">Title:</label>
                    <input id="id_book_set-0-title" maxlength="100" name="book_set-0-title" type="text" />
                    <input type="button" class="add-formset" value="add" />
                </div>
            </div>
        </div>
    </div>
    <input type="submit" name="submit" value="Submit" class="button">
</form>

В этом куске кода есть блок с id="formset". При клике по кнопке add должен создаваться блок следующего содержания:
<div class="formset-item" id="formset-item-1">
    <label for="id_book_set-1-title">Title:</label>
    <input id="id_book_set-1-title" maxlength="100" name="book_set-1-title" type="text" />
    <input type="button" class="add-formset" value="add" />
</div>

И измениться значение с 1 на 2 в
<input id="id_book_set-TOTAL_FORMS" name="book_set-TOTAL_FORMS" type="hidden" value="2" />

Так же, максимальное количество полей, которые можно добавить ограничивается значением в
<input id="id_book_set-MAX_NUM_FORMS" name="book_set-MAX_NUM_FORMS" type="hidden" value="10" />

Подскажите решение этой проблемы. Не силен в javascript, смог только написать код, который просто добавляет блоки с соответствующими айдишниками и удаляет их. Но надо, чтобы соблюдался порядок в айдишниках при удалении блоков. Это я не смог сообразить.
В админке Djnago есть реализация этого функционала. Но мои познания javascript не позволяют мне понять код.
Так же нашел в админке, что разработчиками django используется этот код, как основа. Но как его адаптировать под свои нужды опять же?
  • Вопрос задан
  • 1153 просмотра
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы