我已經看過文檔和其他一些Q/As在這裏,但我似乎無法讓代碼工作。我有一個forms.py文件的基本形式:將SelectMultipleField的動態數量添加到wtf-flask表格中
class SimpleForm(Form):
list_of_files = ['Option 1','Option 2','Option 3','Option 4','Option 5','Option 6']
files = [(x, x) for x in list_of_files]
acheckbox = MultiCheckboxField('Label',choices=files)
third_list = ['Special Analysis']
third_files = [(x, x) for x in third_list]
bcheckbox = MultiCheckboxField('Label', choices=third_files)
category_1 = SelectField(u'', choices=())
category_2 = SelectField(u'', choices=())
category_3 = SelectField(u'', choices=())
(我稍後填寫類別)。我也在我的views.py文件中調用這個表單。
form = SimpleForm()
我想動態添加幾個SelectMultipleField(取決於用戶上傳的csv文件中的列數)。我想傳遞一個列名變量(類別)與列的名稱n = 1-5,並與另一個列表(unique_values),這是該字段的值生成多個字段。我正在看文件,並試圖想出這個:
class F(Form):
pass
F.category = SelectMultipleField('category')
for name in extra:
setattr(F, name, SelectMultipleFields(name.title()))
form = F(request.POST, ...)
我知道這是不正確的。如何修改以將SelectMultipleField添加到我的原始「SimpleForm?」中 我最終想要生成以下n個數:
unique_values = [('1', 'Choice1'), ('2', 'Choice2'), ('3', 'Choice3')]
category_4 = SelectMultipleField(u"",choices=unique_values)
UPDATE: 要調用的形式views.py,我使用以下命令:
select_dict = {'Geography': ['US', 'Asia', 'Europe'], 'Product Type': ['X', 'Y', 'Z']}
form= F(request.form,select_dict)
我子類(forms.py)是:
class F(SimpleForm):
pass
#select_dict could be a dictionary that looks like this: {category_+str(col_number): set of choices}
def __init__(self, select_dict, *args, **kwargs):
super(SimpleForm, self).__init__(*args, **kwargs)
print(select_dict)
for name,choices in select_dict.items():
test = [(x, x) for x in choices]
setattr(F, name, SelectMultipleField(name.title(),choices=test))
,我發現了以下錯誤:「FORMDATA應該是支持‘的GetList’方法的multidict型包裝」
我超級接近這....我怎麼實際上實現的意見頁面?我完全可以做{{for field in form}},但實體的實際名稱是什麼?以前,我會通過'form.category_4'調用,但是這裏有什麼是jinja的名字? –
您使用flask-WTForms? – lesingerouge
我輸入錯誤。我的意思是HTML頁面。例如,對於定義的表單,我會寫{{form.category_1}}。我如何爲名稱不同的動態字段做到這一點。 –