昨天花了一天才解决,遇到的问题以下: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请求中拿到列表形式的选项。