无法从 Django 中获取多个 select 的选择
Cannot fetch choices for multiple select from in django
我在获取多个 select 表单的选项时遇到问题。我正在尝试从 couchdb 中获得选择。它已成功打印到控制台中:
[[u'c6570a56173b637d66ba2a2e390271fe', u'Rambler'], [u'c6570a56173b637d66ba2a2e3902ad1f', u'BBC']]
, 但它没有出现在模板中。
这是我的 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)
views.py
中的表单实例
# Retrieving a FiltersForm
form = FiltersForm(request.POST or None, request=request)
我的表格有什么问题?
您在 __init__
方法中定义了一个名为 sel
的局部变量,但这与您以前在全局级别使用相同名称的变量没有任何关系填写表格。实际上,您必须在该方法中用您的新值替换选项:
self.fields['source'].choices = sel
我在获取多个 select 表单的选项时遇到问题。我正在尝试从 couchdb 中获得选择。它已成功打印到控制台中:
[[u'c6570a56173b637d66ba2a2e390271fe', u'Rambler'], [u'c6570a56173b637d66ba2a2e3902ad1f', u'BBC']]
, 但它没有出现在模板中。
这是我的 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)
views.py
# Retrieving a FiltersForm
form = FiltersForm(request.POST or None, request=request)
我的表格有什么问题?
您在 __init__
方法中定义了一个名为 sel
的局部变量,但这与您以前在全局级别使用相同名称的变量没有任何关系填写表格。实际上,您必须在该方法中用您的新值替换选项:
self.fields['source'].choices = sel