Создание массива из данных модели в шаблоне Django в <script>

Я пытаюсь использовать JQuery date picker и хочу использовать метод beforeShowDay для блокировки дат в виджете. Мне удалось заставить виджет работать, и если я определяю массив, метод beforeShowDay работает безупречно. Но моя проблема заключается в передаче данных из моей модели Django для создания массива. Есть ли способ создать массив внутри элемента в шаблоне, чтобы добиться этого?

template

 <script>
            # works as intended when the array is defined manually
            var array = [
              "2022-10-01"
            ]

            # this is where I am having trouble creating an array from the model data
            var array = [
              {% for x in listing_reservations %}
                {{x.dates}}
              {% endfor %}
            ]

            $(function() {
              $( "#id_start_date" ).datepicker(
                {
                  beforeShowDay: function(date){
                    var string = jQuery.datepicker.formatDate('yy-mm-dd', date);
                    return [ array.indexOf(string) == -1 ];
                }
                }
              );
            });
</script>

Если я правильно понял, вам нужны только даты вашего экземпляра в массиве. Вы можете просто попробовать создать пустой массив и заполнить его значениями

var array = [];

{% for x in listing_reservations %}
array.push({{x.dates}})
{% endfor %}

Если это не работает, попробуйте присвоить {{x.dates}} в другой переменной, а затем добавить эту переменную в ваш массив

Наконец-то разобрался, надеюсь, поможет кому-нибудь в будущем! Спасибо Хадуки за помощь :)

          <script>

            var array = [];

            {% for x in reservations %}
              var date = new Date("{{x.isoformat}}").toISOString().split('T')[0];
              array.push(date);
            {% endfor %}

            console.info(array)

            $(function() {
              $( "#id_start_date" ).datepicker(
                {
                  beforeShowDay: function(date){
                    var string = jQuery.datepicker.formatDate('yy-mm-dd', date);
                    return [ array.indexOf(string) == -1 ];
                }
                }
              );
            });

          </script>
Вернуться на верх