Flask-WTForms - QuerySelectField 用于设置表单选择选项值



我有两个模型 - Employee ,它有一个外键引用Role

views.py

@admin.route('/employees/assign/<int:id>', methods=['GET', 'POST'])
@login_required
def assign_employee(id):
'''
Assign a role to an employee
'''
check_admin()
employee = Employee.query.get_or_404(id)
# prevent admin from being assigned a role
if employee.is_admin:
    abort(403)
form = EmployeeAssignForm(obj=employee)
if form.validate_on_submit():
    employee.role = form.role.data
    db.session.add(employee)
    db.session.commit()
    flash('You have successfully assigned a role!')
    # redirect to the employees page
    return redirect(url_for('admin.list_employees'))
return render_template('admin/employees/employee.html',
                       employee=employee, form=form,
                       title='Assign Employee')

forms.py

class EmployeeAssignForm(FlaskForm):
'''
Form for admin to assign roles to employees
'''
role = QuerySelectField(query_factory=lambda: Role.query.all(), get_label='name', 
                        allow_blank=True, blank_text=(u'Select a role'), 
                        get_pk=lambda x: 'id')
submit = SubmitField('Submit')

现在,使用 get_pk=lambda x: 'id' ,我在 html 表单 Web 视图中获得<option value="id">,无论我选择哪个选项Role,第一个选项总是被选中。

如何将Roleid设置为表单中的选项值并选择它?

干杯!

请尝试get_pk=lambda x: x.id

最新更新