Использование цикла for с литеральной функцией шаблона JavaScript

У меня есть веб-приложение, фронтенд использует обычный HTML5, бэкенд использует Django.

На странице фронтенда у меня есть функция JavaScript template literal. Которая должна выводить все индивидуальные значения в поле выбора набора запросов, переданных из бэкенда в таблицу bootstrap.

view.py:

def view_material(request):
     query_results_publisher = Publisher.objects.all()
     return render(request, 'material/index.html', context={'Publisher':query_results_publisher})

index.html (таблица bootstrap + буквальная функция шаблона javascript):

 ...
<th class ='publisher' data-field="book.publisher" data-formatter="renderPublisher">Publisher</th>...    


<script>
        var Publisher = "{{ Publisher }}";
        var publisher = '';    
        function renderPublisher(value) {
           return `select style="width: 7em" name="" id="">
                for (publisher in ${Publisher}) {
               <option value="eText" ${(value === 'eText') ? 'selected="selected"' : ""}> 
                  publisher</option>}</select>}`
</script>

Но мой цикл for в javascript не работает, похоже, что у меня какая-то проблема с использованием литерала шаблона в цикле for.

Как исправить мою функцию?

Вам нужно проверить значение Publisher перед тем, как зацикливать его, если это массив, используйте for-of, если объект, используйте for-in. Но в вашем случае, я видел, что вы печатаете издателя, а не его свойство, так что я думаю, что это должен быть массив (измените, если я ошибаюсь). Что-то вроде :

var publishers = "{{ Publisher }}"; // no capital for variable' name

function renderPublisher(value) {
var renderString = 'select style="width: 7em" name="" id=""'
for (publisher of publishers) {
    renderString += `
    <option value="eText" ${value === 'eText' ? "selected" : ""}> ${publisher}</option>`

}
renderString += '</select>'
return renderString;

}

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