2012-07-28 46 views
6

Tôi có khả năng gửi thẻ trong biểu mẫu. Khi biểu mẫu được gửi, tôi thấy:Giá trị mảng Django dưới dạng

tags=['3','4','5']

Các giá trị thẻ là ID cho những gì người dùng đã chọn. Tôi có thể nhận được các giá trị từ đối tượng request.POST và mọi thứ đều ổn. Vấn đề là người dùng phải chọn một thẻ ATLEAST. Và tôi muốn làm xác nhận trong một hình thức Django, nhưng tôi không chắc chắn loại hình thức giá trị lĩnh vực để cung cấp ở dạng django? Thông thường tôi sử dụng CharField, DateField, v.v. Nhưng những gì tồn tại để có được giá trị mảng? Và sau đó tôi có thể cung cấp một hàm clean cho nó. Cảm ơn!

Trả lời

4

Hãy thử django.forms.MultipleChoiceField(). Xem https://docs.djangoproject.com/en/dev/ref/forms/fields/#multiplechoicefield

known_tags = (
    (1, 'Choice 1'), (2, 'Choice 2'), (3, 'Choice 3'), 
    (4, 'Choice 4'), (5, 'Choice 5')) 

class MyForm(django.forms.Form): 
    tags = django.forms.MultipleChoiceField(choices=known_tags, required=True) 

EDIT 1:

Nếu những gì bạn muốn làm là để biến một trường văn bản vào một mảng ...

class MyForm(django.forms.Form): 
    tags = django.forms.CharField(required=True) 

    def clean_tags(self): 
     """Split the tags string on whitespace and return a list""" 
     return self.cleaned_data['tags'].strip().split() 
+1

Không, điều này sẽ không làm việc. Tôi không có một bộ "Thẻ đã biết". Tôi có một bảng trong cơ sở dữ liệu, vì vậy các thẻ có thể là bất cứ thứ gì trên bảng đó. – KVISH

+1

Tuple lựa chọn chỉ là một ví dụ. Bạn có thể lấy dữ liệu từ db của bạn và xây dựng danh sách. Hoặc, bạn đang nói bạn cho phép người dùng nhập văn bản (thay vì chọn từ danh sách)? –

+0

Vâng, người dùng có thể nhập văn bản ... Bởi vì các giá trị này là từ thẻ. – KVISH

Các vấn đề liên quan