Django:使用<select multiple>和POST


69

我在模板中使用了类似的内容

<select multiple="multiple"  name="services" id="services" size="5">
    {% for service in services %}
        <option value="{{service.id}}">{{service}}</option>
    {% endfor %}
</select>

当我在Firebug或Django调试中查看POST数据时,我看到它仅发送一个值。我是在做错什么还是误解了一个概念?


模板提供的服务的价值是什么?
S.Lott,2009年

您的意思是:services = Service.objects.all()return render_to_response('add.html',{'services':services})?(我根本无法格式化这些注释。)
neoice 2009年

3
@neoice:提示:不要在评论中为您的问题添加细节。编辑您的问题以添加事实。问题总是正确格式化。并且该问题应独立存在,而无需发表评论。
S.Lott

您如何在jquery中获取值并将其传递给Django视图?
DeadDjangoDjoker

Answers:


164
request.POST.getlist('services')

大奖!我认为我确实需要将服务更改为services [],但是为此需要获取列表r0xors。我以为我可以搜索Django文档,但是显然,我错了。

6
您不需要[]。这是仅限于PHP的约定。
bobince

3
值得一提的是,这也适用于GET数据。request.GET.getlist('services')
亚伦

我还需要将服务更改为适用于Python的services []。
dolphus333 '16

1
您可以扩大这个范围吗?如果在视图中替换它,则在调试时会得到列表,但会丢失所有其他字段。
奥马尔·冈萨雷斯

13

仅供参考,我必须使用:

    list = request.POST.getlist("items[]")

因为省略[]会导致返回空白列表,而不是正确的值。我正在使用jQuery提取多选元素的值,而jQuery似乎正在添加[]


1
我必须使用[]之间没有任何空格
cwhisperer 18'Aug

是的,我最初的括号之间没有空格,然后有人走来编辑我的回答以包含空格,这当然会破坏代码,因为匹配文字“ []”与“ []”不相同
electromechanick


1

您只需使用...即可获得预期的清单。

request.POST.getlist('fiel_name')

0

request.POST.getlist('services')

为我工作。或者您可以将选择框名称定义为列表

By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.