Как использовать SelectionField в FieldList в Flask? - PullRequest
0 голосов
/ 05 августа 2020

Я хочу иметь 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?

...