Django заполнение выпадающего списка значениями

Здравствуйте ребята, я хочу заполнить выпадающий список идентификаторами из базы данных, но при итерации по списку я получаю обратно и скобки и запятые и пробелы.

В файле views.py у меня есть следующее:

id = list(Device.objects.values_list('patientId', flat=True).distinct())
print(id)
for item in id:
    print(item)

context = {"filename": filename,
           "collapse": "",
           "patientId": json.dumps(id),
           "labels": json.dumps(labels, default=str),
           "data": json.dumps(data),
           }

Печать возвращает именно то, что я хочу, идентификаторы(1,2,3), но при переходе во фронтенд (index.html), со следующим кодом:

{{patientId}}
                <div class="row">
                    <label for="patientId">Choose a patient:</label>
                    <select name="patient" id="patient">
                        {% for item in patientId%}
                        <option value="{{item}}">
                                {{item}}
                        </option>
                        {%endfor%}
                    </select>

Что я получаю

Как я могу получить во фронтенде выпадающий список с правильными значениями?

Ваша проблема в том, что вы не передаете list шаблону django, вместо этого вы передаете str (строковое представление списка -> json)

context = {"filename": filename,
           "collapse": "",
           "patientId": json.dumps(id), # < -----------------------
           "labels": json.dumps(labels, default=str),
           "data": json.dumps(data),
           }

эта строка должна быть

   "patientId": id # this should be a better and more specific name

потому что вам нужно передать список в шаблон, чтобы выполнить итерацию по нему следующим образом

{% for item in patientId%}

И кстати, ваши шаблоны должны выглядеть следующим образом

{% for item in patientId %} # notice the space
{% endfor %} # notice the spaces
Вернуться на верх