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

问题描述 投票:1回答:1

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

views.朋友:

@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.朋友:

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设置为我的表单中的选项值并选择它?

干杯!

python-2.7 flask-sqlalchemy flask-wtforms
1个回答
0
投票

试试get_pk=lambda x: x.id吧。

© www.soinside.com 2019 - 2024. All rights reserved.