gauravhalbe
gauravhalbe

Reputation: 402

Error retrieving multiple select option in Django

I have a drop down with multiple select option in my html page. On form submission, I am trying to capture all of the selected options by user in that drop down. but it throws me an error instead "TypeError:'instancemethod' object is not subscriptable". Following is my template.html and views.py

Template.html:

Select packages:
<form name=automationForm action="/vsawebauto/automation/results/" method="post">
//some form elements
<select id="package" name="package[]" multiple="multiple" size="5">
{% for i in ida.package_set.all %}
<option value="{{ i.pkg_id }}">{{ i.display_name }}</option>
{% endfor %}
</select>
//some form elements
<input type="submit" id="submit" value="Submit Job" />

Views.py:

def results(request):
    //some code
    selected_packages = request.POST.getlist['package[]']
    //some code

    return HttpResponse("Selected Packages:"+selected_packages)

Note: I debugged the code as well. The request.POST object has multiple selected values. For eg. when 1 and 701 packages are selected by user, request.POST has 'package[]': ['1','701']. But the code fails when I do request.POST.getlist['package[]']

Upvotes: 2

Views: 3160

Answers (1)

karthikr
karthikr

Reputation: 99630

request.POST.getlist['package[]']

Should be

request.POST.getlist('package[]')

Replace [] with () which was the cause of the error.

Here is the documentation and usage of getlist.

Also, change

return HttpResponse("Selected Packages:"+selected_packages)

to

return HttpResponse("Selected Packages: %s" % selected_packages)

Upvotes: 4

Related Questions