2015-02-10 2 views
0

Я хочу заполнить выбор поля выбора.объект не итерируется при заполнении формы

Я пытаюсь этот код, но я получаю:

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') 

В чем причина ошибки?

EDIT: что-то вроде этого будет заполняться представлением каждого объекта буквально.

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

ответ

1

choices должен быть interable, содержащий пары ключ-значение.

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

Это приведет варианты, где value соответствует id и текст совпадает с возвращаемым значением __str__.

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

Это будет заполнено представлением каждого объекта буквально. Не значения. – user2990084

+0

Это означает, что вы не определили 'Interest .__ str__'. Если вы не хотите этого делать, вы можете использовать любой атрибут «Интерес», который вы хотите. Не видя его определения, я не могу использовать конкретный пример. – dirn

+0

ОК, спасибо. Я приму. – user2990084

0

вы должны заполнить Dict

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

без намного больше информации или дополнительной информации о том, как этот набор данных генерируется это то, что я думаю, что вы должны смотреть на делать.

Смежные вопросы