在Flask WTForm中设置QuerySelectField的默认值

时间:2020-01-27 12:26:01

标签: python sqlalchemy flask-sqlalchemy flask-wtforms wtforms

我有一个带有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))

0 个答案:

没有答案