昨天花了一天才解決,遇到的問題以下:html
在forms.py裏有一個以下的字段:django
jira_issue = forms.CharField( required=False, label=u"Jira問題", widget=forms.SelectMultiple( attrs={ 'class': 'form-control col-md-7', 'class': 'select2_single form-control', 'data-placeholder': 'jira問題', 'style': 'width:300px; ', 'multiple': "multiple", } ), )
由於widget表現爲SelectMultiple,而Field爲CharField。因此若是後臺能拆到jira_issue,獲得的也是會字符串,而不是列表。這明顯段位不高。後端
我也測試過另外一種方案,就是將CharField更改成再multichoice這樣的字段,但在django裏,這樣的定義在通過form驗證時,要提早寫好CHOICE選項。api
而這個jira_issue沒法提早定義choice。它的值都是即時從jira api裏獲得的。測試
那麼,這如何是好呢?ui
兩種實現,但後端代碼都雷同的。spa
一,不使用forms.py裏的字段,而後,在form_valid裏本身額外獲取列表。code
二,使用formy.py,但這個字段獲取到以後,並不使用,在form_valid裏本身額外獲取列表。orm
這種思路有點hack,我也想不到其它的東東了。趕進度呢~~~~~~~htm
class DeployCreateView(FormView): template_name = 'version/create_deploy.html' form_class = DeployForm .... def form_valid(self, form): jira_issue_list = self.request.POST.getlist('jira_issue') ....
代碼中紅字是關鍵,從self的request請求中拿到列表形式的選項。