Входные данные чекбокса передаются только в том случае, если он отмечен флажком
Это мой первый проект 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>