Передача словаря в wtforms forms.py (*args, * * kwargs) вопросы

Создание приложения колбы и проблема с передачей словаря из my views.py страница в my form.py page. Словарь будет создаваться динамически на основе загруженных данных. Пока он жестко закодирован. Я должен пройти, чтобы создать динамическое количество полей.

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 в формах и включаю только цикл «for». Прямо сейчас я продолжаю получать эту ошибку: «formdata должна быть оболочкой типа multidict, которая поддерживает метод ‘getlist’ «

1 ответ

  1. Я переключил порядок аргументов, переданных в форму. Правильный путь ниже:

    form = F(select_dict, request.form)