SelectField WTForms не возвращает выбранное значение при отправке формы - PullRequest
1 голос
/ 06 ноября 2019

Я пытаюсь создать SelectField, чтобы изменить статус проверки пользователя со значениями (True, False), однако поле не изменяет возвращаемое значение, продолжайте возвращать значение по умолчанию, ниже приведен код дляФорма.

class UpdateUserForm(FlaskForm):
username = StringField("Username", validators=[DataRequired()])
email = StringField("Email", validators=[DataRequired(), Email()])
status = SelectField("Account Status", choices=[(True, "Verified"), (False, "Not Verified")], coerce=bool, validators=[InputRequired()])
submit = SubmitField("Update")

def validate_username(self, username):
    if username.data != g.username:
        user = User.query.filter_by(username=username.data).first()
        if user:
            raise ValidationError("That username is taken, please choose a different one.")

def validate_email(self, email):
    if email.data != g.email:
        user = User.query.filter_by(email=email.data).first()
        if user:
            raise ValidationError("That email is taken, please choose a different one.")

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

@admin.route("/admin_panel/update_user/<int:user_id>", methods=['GET', 'POST'])
@admin_login_required
def update_user(user_id):

user = User.query.filter_by(id=user_id).first()

g.username = user.username
g.email = user.email

updateUserForm = UpdateUserForm()
updateUserForm.username.data = user.username
updateUserForm.email.data = user.email
updateUserForm.status.data =  user.verified

if updateUserForm.validate_on_submit():
    user.username = updateUserForm.username.data
    user.email = updateUserForm.email.data
    user.verified = updateUserForm.status.data

    db.session.commit()
    flash("Account updated!", 'success')
    return redirect(url_for('admin.admin_panel'))

return render_template("admin/update_user.html", title="Update User", updateUserForm=updateUserForm)
...