2009-03-06 3 views
45

Tôi đang sử dụng một cái gì đó như thế này trong mẫu của tôiDjango: sử dụng <chọn nhiều> và POST

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

Khi tôi xem các dữ liệu POST trong Firebug hoặc debug Django, tôi thấy nó chỉ gửi một giá trị. Tôi đang làm điều gì sai hoặc hiểu lầm một khái niệm?

+0

Giá trị của dịch vụ được cung cấp cho mẫu là gì? –

+0

Bạn có nghĩa là: services = Service.objects.all() return render_to_response ('add.html', {'services': services}) ?? (Tôi không thể nhận các nhận xét này ở định dạng nào cả.) – neoice

+3

@neoice: Gợi ý: không thêm chi tiết vào câu hỏi của bạn trong các nhận xét. Chỉnh sửa câu hỏi của bạn để thêm sự kiện. Câu hỏi luôn luôn định dạng chính xác. VÀ câu hỏi phải đứng một mình mà không có một chuỗi các chú thích. –

Trả lời

110
request.POST.getlist('services') 
+0

Jackpot! Tôi nghĩ rằng tôi _did_ cần phải thay đổi dịch vụ cho các dịch vụ [], nhưng r0xors getlist cho việc này. Tôi nghĩ rằng tôi muốn cọ rửa các tài liệu Django nhưng dường như, tôi đã sai. – neoice

+5

Bạn không cần []. Đó là một quy ước giới hạn trong PHP. – bobince

+0

Nó có thể đáng nói đến là điều này cũng làm việc cho dữ liệu GET. 'request.GET.getlist ('services')' – Aaron

8

Just FYI, tôi đã sử dụng:

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

vì bỏ qua [] gây ra một danh sách trống để được trả lại thay vì các giá trị chính xác. Tôi đang sử dụng jQuery để tìm nạp các giá trị của phần tử chọn nhiều và jQuery dường như đang thêm []

1

Xem ra! phương thức getlist từ QueryDict trả về một danh sách trống nếu khóa không tồn tại. Nó không ném một ngoại lệ. http://bit.ly/MdgrUH

0

bạn có thể nhận được danh sách dự kiến ​​chỉ bằng cách sử dụng ...

request.POST.getlist('fiel_name') 
0

request.POST.getlist ('dịch vụ')

Làm việc cho tôi. hoặc bạn có thể xác định tên hộp chọn làm danh sách

+0

câu trả lời này cải thiện điều này như thế nào: https://stackoverflow.com/a/618626/982161 ?? –