我有一个带有QuerySelectField的Flask WTForm,并且想从数据库中设置默认值。
在数据库中,我有一个作业表,每个作业都有一个状态。
class Job(db.Model):
id = db.Column(db.Integer, primary_key=True)
job_status = db.Column(db.Integer, db.ForeignKey('job_status.id'))
class JobStatus(db.Model):
id = db.Column(db.Integer, primary_key=True)
status_name = db.Column(db.String(32), index=True, unique=True)
jobs = db.relationship('Job', backref='status', lazy='dynamic')
,格式如下:
class EditJobForm(FlaskForm):
job_status = QuerySelectField('Status', query_factory=get_job_statuses, get_label='status_name', validators=[DataRequired()], default=lambda: JobStatus.query.get(job.job_status))
submit = SubmitField('Submit')
显示表单的路径如下:
@app.route('/editjob/<int:job_id>', methods=['GET', 'POST'])
def editjob(job_id):
job = Job.query.get(job_id)
form = EditJobForm(obj=job)
return render_template('editjob.html', title='Edit Job', form=form, job=job)
我希望显示的表单具有当前作业在表单中选择的默认值。我以为这两行都没有,但是没有喜悦。
在路线上:
job = Job.query.get(job_id)
在表单中:
default=lambda: JobStatus.query.get(job.job_status))