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