Django的Form另类实现SelectMultiple

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

相关文章
相关标签/搜索