填充表单时对象不可迭代

object is not iterable when populate form

我想填充 select 字段的选项。

我正在尝试此代码,但我收到:

TypeError: 'Industry' object is not iterable

查看

form = Filter_companies(request.form)

interests = Industry.query.all()
#[<app.companies.models.Industry object at 0xa9afc0c>, <app.companies.models.Industry object at 0xa9afc4c>}

form.industry.choices = interests

形式

class Filter_companies(Form):
    industry = SelectField('Industry')

错误原因是什么?

编辑:像这样的东西将用每个对象的字面表示来填充。

form.industry.choices = [(x, x) for x in interests]

choices 需要是一个包含键值对的可交互对象。

interests = Industry.query.all()
form.industry.choices = [(interest.id, str(interest)) for interest in interests]

这将导致 valueid 匹配且文本与 __str__ 的 return 值匹配的选项。

<option value="1">Name 1<option>
<option value="2">Name 2<option>

你应该填充一个字典

form = Filter_companies(request.form)
interests = {}
industrydata = form.industry.choices
interests.append(andustry.query.all())
industrydata = interests.key('Industry')
print industrydata

没有关于如何生成此数据集的更多信息或附加信息,这就是我认为您应该关注的事情。