Создание флеш-приложения и проблема с передачей словаря с моей страницы views.py на мою страницу form.py. Словарь будет создан динамически на основе загруженных данных. Пока это жестко запрограммировано. Мне нужно пройти, чтобы создать динамическое число полей.Передача словаря в wtforms forms.py (* args, ** kwargs)
views.py
select_dict = {'Geography': ['US', 'Asia', 'Europe'], 'Product Type': ['X', 'Y', 'Z']}
form = F(request.form,select_dict)
form.py
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=())
class F(SimpleForm):
pass
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))
код работает, если я определить select_dict в формах и включают в себя только "для" цикла. Прямо сейчас я продолжаю получать эту ошибку: «formdata должна быть оболочкой с множеством типов, которая поддерживает метод getlist»
Вы определили '__init__', чтобы сначала взять' select_dict', но вы сначала передаете 'request.form'. – davidism
Вы правы. Это решило. –