@Kuro_hu

Почему checkbox всегда передает значение 0?

Добрый день.

Проблема заключается в том, что необходимо в checkbox_values передать value каждого пользователя. Код всегда идет по пути else: checkbox_values.append(0) и отправляет в базу нули

<form class="needs-validation" name="checkbox" method="post" novalidate="" action="/">
              <ul class="list-group mb-3">
                  {% for row in results %}
                  {% set i = loop.index %}
                  <li class="list-group-item d-flex justify-content-between bg-light">
                      <div>
                          <div class="form-check">
                             {% if row[1] == 1 %}
                              <input type="checkbox" class="form-check-input" name="checkbox{{ i }}{{ row[2] }}_on" value="checkbox{{ i }}{{ row[2] }}" id="checkbox{{ i }}{{ row[2] }}" checked>
                              {% elif row[1] == 0 %}
                              <input type="checkbox" class="form-check-input" name="checkbox{{ i }}_{{ row[2] }}_off" value="checkbox{{ i }}_{{ row[2] }}" id="checkbox{{ i }}_{{ row[2] }}" {% if row[1] == 1 %}checked         
                              {% endif %}>
                              {% endif %}
                              <label class="form-check-label" for="same-address"><h6 class="my-0">{{ row[0] }}. {{ row[3] }}</h6>
                              <input type="hidden" name="user_id[]" value="{{ row[2] }}">
                          </div>
                      </div>
                  </li>
                  {% endfor %}
              </ul> 
              <button class="w-100 btn btn-primary btn-lg" type="submit">Отправить</button>
          </form>


checkbox_values = []
        user_ids = request.form.getlist('user_id[]')
        print(str(request.form))
        for user_id in user_ids:
            checkbox_value = request.form.get(f"checkbox{user_id}")
            if checkbox_value:
                try:
                    checkbox_value = int(checkbox_value)
                    if checkbox_value not in [0, 1]:
                        raise ValueError("Checkbox value must be 0 or 1")
                except ValueError:
                    raise ValueError("Checkbox value must be an integer")
                checkbox_values.append(checkbox_value)
            else:
                checkbox_values.append(0)
  • Вопрос задан
  • 86 просмотров
Пригласить эксперта
Ответы на вопрос 1
NeiroNx
@NeiroNx
Программист
Потому что так задуманно в HTML - value и checked аттрибуты не связанны.
<input type="checkbox" onchange="this.value=0+this.checked" value="0">
Ответ написан
Комментировать
Ваш ответ на вопрос

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

Войти через центр авторизации
Похожие вопросы