Входные данные чекбокса передаются только в том случае, если он отмечен флажком

Это мой первый проект Django У меня есть простая форма, в которую я хотел бы отправить все значения строки (отмеченные или не отмеченные), Ошибка, с которой я сталкиваюсь, заключается в том, что она отправляет значение row{num} только если оно отмечено.

<script>
function calc(elemId)
{
  var elem = document.getElementsByName(elemId)[0];
  if (elem.checked)
  {
      elem.value = 1;
  } else {
      elem.value = 0;
  }
}
</script>
<div class="container pt-3">
    <form action="." method="post">
        <table class="table table-hover">
        <thead>
            <tr>
                <th scope="col">#</th>
                <th scope="col">Keyword</th>
                 <th scope="col">seller_items</th>
                <th scope="col">Total</th>
                <th scope="col">checked</th>
            </tr>
        </thead>
                {% csrf_token %}
                {{ form|crispy }}
            {%for i in data%}
                <tr >
                    <th scope="row">{{forloop.counter}}</th>
                    <td>{{i.keyword}}</td>
                    <td>{{i.seller_items}}</td>
                    <td>{{i.total_found}}</td>
                    <td>
                        {% if i.checked %}
                        <input type="checkbox" name="row{{i.id}}" value="1" checked="checked" onclick="calc('row{{i.id}}')"/>
                        {%else%}
                        <input  type="checkbox" name="row{{i.id}}" value="0" onclick="calc('row{{i.id}}')"/>
                        {%endif%}
                    </td>
                </tr>
            {% endfor %}
        </table>
        <div class="row">
            <div class="col-12">
                <button class="btn btn-primary float-right" type="submit">Update</button>
            </div>
        </div>
    </form>

форма отправляется при нажатии кнопки, но в почтовом запросе находятся только строки с галочками

Это ожидаемое поведение веб-браузеров. Если флажок не False, данные не будут отправлены. Если флажок равен True, будет отправлено 'on'.

Во время очистки вашей формы Django автоматически установит значение clean_data в False, если его там нет, и выполнит обработку данных.

Проверьте этот ответ: https://stackoverflow.com/a/1992745/14091199

Вы можете поместить скрытый ввод с тем же именем, что и флажок, который не будет проверяться. Скрытый ввод всегда будет успешным и отправлен на сервер, но если флажок будет установлен, он отменит скрытый ввод.

<form>
    <input type='hidden' value='0' name='selfdestruct'>
    <input type='checkbox' value='1' name='selfdestruct'>
</form>
Вернуться на верх