Я хочу иметь SelectionField
в FieldList
, используя Flask. Я делаю:
Models:
class UserForm(FlaskForm):
id = IntegerField('id')
username = StringField('username')
user_level = SelectField('user_level',coerce=int, choices=[], validators=[DataRequired()])
class UsersForm(FlaskForm):
title = StringField('title')
users = FieldList(FormField(UserForm))
Routines:
@app.route("/users", methods=['GET', 'POST'])
@login_required
def users():
usersform = UsersForm()
usersform.title.data = current_user.username # change the field's data
levels = [(user_level.id, user_level.name) for user_level in User_level.query.filter(User_level.id > current_user.user_level).all()]
user_users = current_user.get_children_list()
for member in user_users:
member_form = UserForm()
member_form.username = member.username
member_form.id = member.id
member_form.user_level.choices = levels
usersform.users.append_entry(member_form)
print(usersform.users[0])
return render_template('users.html', title='Users', form = usersform)
Html:
<table id="example" class="table table-striped table-bordered" style="width:100%">
<thead>
<tr class="text-center">
<th scope="col">Name</th>
<th scope="col">Level</th>
</tr>
</thead>
<tbody>
{% for member in form.users %}
<tr>
<td>{{ member.username(class="form-control form-control-lg") }}</td>
<td>{{ member.user_level(class="form-control form-control-lg") }}</td>
</tr>
{% endfor %}
</tbody>
</table>
Но у меня пусто Dropdown
. Anline print(usersform.users[0].)
возвращает:
<select id="users-0-user_level" name="users-0-user_level" required></select>
Но если я это сделаю:
print(levels)
У меня не пустой список.
Что здесь может быть не так? Почему мой SelectionField
начинает пустеть, когда я кладу его в FieldList
?