Печать данных модели Django в виде массива JavaScript
Я напечатал цикл for как показано ниже в моем HTML шаблоне:
{% for athlete in booking.athlete.all %}
{{ athlete.id }}
{% endfor %}
Вывод в HTML выглядит следующим образом.
<td>
1
2
3
</td>
Возможно ли заставить вывод отображаться как ["1", "2", "3" ], чтобы затем использовать это как JS массив или объект?
Я попробовал несколько вещей из шаблона Django, но это не удаляет дополнительное белое пространство.
Самым простым способом может быть использование встроенного фильтра json_script. Однако вы не можете передать QuerySet фильтру напрямую, поэтому вам нужно передать данные в контексте шаблона в виде list.
Например, в вас view где-то, вам понадобится:
def my_view(request):
...
# get id's of all athletes as a list
context['athletes'] = [athlete.id for athlete in booking.athlete.all()]
...
тогда в вашем шаблоне будет:
{{athletes|json_script:'athletes-data'}}
, который будет отображаться как что-то вроде:
<script id="athletes-data" type="application/json">[1, 2, 3]</script>
к которому можно получить доступ в вашем javascript на стороне клиента.