У меня есть Flask WTForm с QuerySelectField, и я хотел бы установить значение по умолчанию из базы данных.
В базе данных у меня есть таблица для заданий, и каждое задание имеет статус.
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))