Как заполнить флажки в таблице значениями из модели Django

Мой html table имеет столбец, который содержит checkbox. Пользователь может установить или снять флажок. Значение (boolean) хранится в Django model Subscriber под Subscriber.participates. Все объекты Subscriber импортируются в HTML с помощью Django view (context = {'subscribers' : Subscriber.objects.all(),}).

При загрузке таблицы флажки должны быть установлены в правильное значение. Для этого я написал javascript function, который вызывается в <input> element. Однако все флажки остаются не отмеченными, хотя я проверил через /admin/ в Django, что некоторые значения в базе данных действительно "TRUE". firstName и lastName загружаются в таблицу без проблем. Что я сделал не так?

<head>
    <meta charset="UTF-8">
    <title>Participants</title>
    <script>
    function checkBox() {
        if({{ x.participates }}){
              document.getElementById("checkbox").checked = true;
        } else {
              document.getElementById("checkbox").checked = false;
        }
    }
    </script>
</head>
<body>
  <table>
  {% for x in subcribers %}
      <tr>
          <form action="updateSuscribers/{{ x.id }}" method="post">
              {% csrf_token %}                
              <td>{{ x.firstName }}</td>
              <td>{{ x.lastName }}</td>
              <td>
                  <input id="checkbox" type="checkbox" name="participates" onload="checkBox()">
              </td>           
          </form>
      </tr>
  {% endfor %}
  </table>
</body>

вам не нужна js функция для рендеринга существующих данных с помощью Checked/Unchecked Box.

предполагающее булево имя поля is_subscribed

{% for sub in subscribers %}
   {% if sub.is_subscribed %}
     <input type="checkbox" checked>
   {% else %}
     <input type="checkbox">
   {% endif %}
{% endfor %}

но да, вам понадобится событие js click, если вы хотите, чтобы оно обновлялось с помощью Click on Realtime без обновления страницы

Вернуться на верх