Установка значения по умолчанию для QuerySelectField в Flask WTForm - PullRequest
0 голосов
/ 27 января 2020

У меня есть 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))
...