Печать данных модели 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 на стороне клиента.

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