Выберите поле Раскрывающийся список колб WTForm TypeError: объект 'NoneType' не повторяется - PullRequest
1 голос
/ 19 сентября 2019

Я редактировал этот вопрос, столкнувшись с другой проблемой

  File "/home/amar/tts/FLASKAPP/voicetune/venv/lib/python3.7/site-packages/wtforms/fields/core.py", line 471, in pre_validate
for v, _ in self.choices:
TypeError: 'NoneType' object is not iterable

файл form.py

    language = SelectField(u'Language', coerce=str)

в файле rout.py

def dashboard():
  form = DashboardForm()
  form.language.choices = [(lang.language_name,lang.language_label) for lang in Languages.query.all()]

  return render_template('dashboard.html', title='Dashboard', form=form)

панель инструментов.HTML-файл

    {{ form.language(class="form-control btn btn-info dropdown-toggle") }}

1 Ответ

0 голосов
/ 19 сентября 2019

Это метод, который я использовал в предыдущем проекте для выбора нескольких полей с помощью формы.

Class add(Form)
conceptList = SelectMultipleField('conceptList', coerce=int)

# Dynamic adding a concept
def __init__(self, *args, **kwargs):
    Form.__init__(self, *args, **kwargs)
    # Get the concepts from concepts table
    self.conceptList.choices = [(c.concept_id, c.concept_name) for c in Concepts.query.order_by('concept_name')]

и в файле представлений я использовал этот метод для извлечения данных из формы.

for concept_id in form.conceptList.data:
    concept = Concepts.query.get(concept_id)
    new_tool.concepts_tools.append(concept)

Это не в выпадающем меню, но вы можете найти его полезным.Разница в том, что выбор объявляется в форме.Я не уверен в этом, но я думаю, что вам нужно изменить selectField со строки на int, а также ссылаться на id языков в выборе.Как то так:

language = SelectField(u'Language', coerce=int)

 def dashboard():
     form = DashboardForm()
     form.language.choices = [(lang.language_id,lang.language_name,lang.language_label) for lang in Languages.query.all()] 
return render_template('dashboard.html', title='Dashboard', form=form) 
...