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請求中拿到列表形式的選項。

相關文章
相關標籤/搜索