#django #jinja2
#django #jinja2
Вопрос:
У меня есть очень простая форма с полем «выбрать». Для каждого пользователя в приложении создается поле параметров, которое отлично работает:
<select name="users" id="users" multiple>
<option value="{{admin.id}}" selected>{{ admin.username }}</option>
<!-- can I delete the admin from this list? -->
{% for user in users %}
<option value="{{user.id}}">{{ user.username }}</option>
{% endfor %}
</select>
Теперь, когда я пытаюсь получить значения «пользователей», даже если все они выбраны, я всегда получаю только одно значение…:
if request.method == "POST":
title = request.POST["title"]
admin = request.user
project_users = request.POST["users"]
print(project_users)
Я просто получаю «1» или «2», но не список? Как я могу извлечь все значения из этого множественного выбора?
Комментарии:
1.
request.POST.getlist('users')
.
Ответ №1:
Если вы указываете индекс request.POST
, вы получаете последнее значение, которое было сопоставлено с данным ключом, даже если их несколько.
Вы можете использовать .getlist(…)
[Django-doc] для получения списка значений. Список будет пустым, если никакие значения не совпадают с заданным ключом:
if request.method == 'POST':
title = request.POST['title']
admin = request.user
project_users = request.POST.getlist('users')
print(project_users)
Однако может быть удобнее работать с формами [Django-doc] для проверки и очистки данных запроса.