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