2012-07-28 14 views
6

我有能力在表單中提交標籤。當提交表單時,我看到:Django數組值

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

將變量值ID對哪些用戶已選擇。我能夠從request.POST對象中獲取值,並且一切都很好。問題是用戶必須選擇ATLEAST一個標籤。我想用Django表單進行驗證,但我不確定在django表單中提供哪種表單字段值?通常我使用CharField,DateField等,但是獲取數組值的方法是什麼?然後我可以爲它提供一個clean函數。謝謝!

回答

4

嘗試django.forms.MultipleChoiceField()。 見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) 

編輯1:

如果你想要做的是把一個文本框到一個數組...

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

不,這是行不通的。我沒有一套「已知標籤」。我在數據庫中有一個表,所以標籤可以是該表上的任何東西。 – KVISH 2012-07-29 00:12:48

+1

選擇元組只是一個例子。您可以從您的數據庫中獲取數據並構建列表。或者,你是說你允許用戶輸入文本(而不是從列表中選擇)? – 2012-07-29 00:16:18

+0

是的,用戶可以輸入文字......因爲這些值來自標籤。 – KVISH 2012-07-29 00:55:48