Как заполнить флажки в таблице значениями из модели 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 без обновления страницы