django - 在 Django 中,多选输入只返回一个值?
问题描述
我有一个带有“选择”字段的非常简单的表单。对于应用程序中的每个用户,它都会创建一个选项字段,效果很好:
<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”而不是列表?如何从这个多重选择中检索所有值?
解决方案
如果您下标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]来验证和清理请求数据可能更方便。
推荐阅读
- java - CodeIgniter API 在 android(java) 上运行两次
- python - 如何防止 Scikit-Learn Imputer 删除 NaN 行?
- python - Python PyQt5 qtableWidget 到 excel 错误
- kotlin - 导航组件 - 合成返回栈
- javascript - 从 contenteditable div 中获取已删除的节点(Froala 编辑器)
- javascript - 为什么前端框架使用服务器运行
- arrays - 将单个字符附加到 char 数组并返回 char 数组
- global-variables - Clips编程——比较全局变量的值
- maven - Maven3 子项目不从 `pluginManagement` 引用,而是从父项目继承
- amazon-web-services - AWS WAF v2 安全策略和 Web ACL