Создание массива из данных модели в шаблоне 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>