2016-09-03 14 views
0

複数選択フォームの選択肢を取得する際に問題があります。私はcouchdbから選択肢を得ようとしています。 [[、[u'c6570a56173b637d66ba2a2e390271fe 'u'Rambler '] u'c6570a56173b637d66ba2a2e3902ad1f'、u'BBC']]

を、それがテンプレートに表示されていない:それは成功し、コンソールにそれをプリントアウトしています。ここ
は私のフォームで間違って何views.py
djangoから複数選択の選択肢を取得できません

# Retrieving a FiltersForm 
form = FiltersForm(request.POST or None, request=request) 

にフォームの私のforms.py

sel = [] 


# FiltersForm is print out title, two select elements and an one required textinput's field 
class FiltersForm(forms.Form): 
    title = forms.CharField(widget=forms.TextInput(attrs={'placeholder': 'A title'}), label='Title') 
    item = forms.ChoiceField(widget=forms.Select(attrs={'class': 'selectpicker'}), required=False, label='If', 
          choices=items) 
    action = forms.ChoiceField(widget=forms.Select(attrs={'class': 'selectpicker'}), required=False, label='is', 
           choices=actions) 
    word = forms.CharField(widget=forms.TextInput(attrs={'placeholder': 'a word'})) 
    link = forms.URLField(max_length=255, widget=forms.URLInput(attrs={'value': 'http://'})) 
    source = forms.MultipleChoiceField(widget=forms.SelectMultiple(attrs={'class': 'selectpicker'}), choices=sel) 

    def __init__(self, *args, **kwargs): 
     request = kwargs.pop('request', None) 
     response = request.db.view('subscriptions/source', key=str(request.user)).rows 
     for item in response: 
      sel.append([item.id, item.value['title']]) 
     print sel 
     super(FiltersForm, self).__init__(*args, **kwargs) 

インスタンスの?

答えて

1

__init__メソッド内にselという名前のローカル変数を定義しましたが、フォームに入力するときに使用したグローバルレベルで同じ名前の変数とは関係ありません。あなたが実際にそのメソッド内の新しい値を使用して選択肢を交換する必要があるだろう:

self.fields['source'].choices = sel 
+0

私はそれを交換していたと私はエラーを持っている:「FiltersForm」オブジェクトが必要なし属性「フィールド」 –

+0

を持っていませんスーパーコールの後に行く。 –

+0

空リストを送信しています。多分私は何か間違っているのでしょうか?あなたは私の方法を正しく終了できますか? –

関連する問題