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

Здесь у меня есть несколько флажков с одинаковым именем. Флажок может быть добавлен n-ое количество раз.

Здесь, если уже проверено, я хочу послать 1, а если нет - 0.

Сейчас в моем бэкенде django я получаю список с request.POST['need_a'] вот так.

Если все отмечено [1, 1, 1] что нормально .

если только одна галочка [1] но я хочу вот так [1, 0, 0]

 <input name="need_a" type="checkbox" class="custom-control-input" 
 value="1" {% if some_condition %}checked{% endif %}/>

 <input name="need_a" type="checkbox" class="custom-control-input "
 value="1" {% if some_condition %}checked{% endif %}/>

 <input name="need_a" type="checkbox" class="custom-control-input" 
 value="1" {% if some_condition %}checked{% endif %}/>

Это работает.
Просто сделайте обработчик изменений в jquery и докажите, проверяется он или нет.
Проверьте его в Инструментах разработчика.

$('input[type="checkbox"]').change(function() {
  if (this.checked) {
    $(this).val(1);
  } else {
    $(this).val(0);
  }
});
<script src="https://cdnjs.cloudflare.com/ajax/libs/jquery/3.3.1/jquery.min.js"></script>
<div>
  <input name="need_a" type="checkbox" class="custom-control-input" value="1" checked>
  <label for="scales">Scales</label>
</div>

<div>
  <input name="need_a" type="checkbox" class="custom-control-input" value="1" checked>
  <label for="horns">Horns</label>
</div>

<div>
  <input name="need_a" type="checkbox" class="custom-control-input" value="1" checked>
  <label for="Guitar">Guitar</label>
</div>

Ваш подход неверен, вам нужно создать скрытый вход со значением по умолчанию для непроверенных полей и сохранить группировку по имени, см. мой пример ниже:

<input name="need_a" type="hidden" value="0">
<input name="need_a" type="checkbox" class="custom-control-input" value="1" {% if some_condition %}checked{% endif %}>

<input name="need_b" type="hidden" value="0">
<input name="need_b" type="checkbox" class="custom-control-input " value="1" {% if some_condition %}checked{% endif %} />

<input name="need_c" type="hidden" value="0">
<input name="need_c" type="checkbox" class="custom-control-input" value="1" {% if some_condition %}checked{% endif %} />

А в django вам нужно создать массив для соблюдения вашего формата, например:

formValues = [request.POST.getlist('need_a'), request.POST.getlist('need_b') , request.POST.getlist('need_c')]

Тогда вы получите [1,0,1] / [0,0,1] / etc значения.

Вот что браузер посылает django (need_a checked, need_b not checked, need_c checked):

need_a  […]
0   "0"
1   "1"
need_b  "0"
need_c  […]
0   "0"
1   "1

А вот что мой бэкенд (PHP) поймал на запрос:

Array ( [need_a] => 1 [need_b] => 0 [need_c] => 1 ) 
Вернуться на верх