Сохраните выбор QuerySelectField в БД с помощью SQLAlchemy - PullRequest
0 голосов
/ 22 июня 2019

Я использую QuerySelectField с SQLAlchemy и WTForms, чтобы выбрать опцию из базы данных.Я хотел выбрать опцию и затем сохранить этот выбор или ссылку на этот выбор в новом столбце, но я получаю ошибку.

sqlalchemy.exc.InterfaceError: (sqlite3.InterfaceError) Ошибка привязки параметра 1 - возможно, неподдерживаемый тип.[SQL: INSERT INTO choice (risk_level, opts, urls_affered) VALUES (?,?,?)] [Parameters: ('low',, aaa ')]] (фон этой ошибки: http://sqlalche.me/e/rvf5)

Я думаю, что ошибка в том, что мне не хватает обработки шага между выбором моей опции и добавлением ее в базу данных, и выбор не является строкой, как указано в модели БД?


def choose_finding():
    return Finding.query

class SelectForm(FlaskForm):
    risk_level = SelectField('Risk Level',choices=[('low','Low Risk'), ('medium','Medium Risk'),
                            ('high','High Risk'), ('severe','Severe Risk')],validators=[DataRequired()])
    urls_affected = TextField('URLs Affected',validators=[DataRequired()], widget=TextArea())
    opts = QuerySelectField('Choose Finding',query_factory=choose_finding, get_label='finding_name')
    submit = SubmitField('Submit')
class Choice(db.Model):
    id = db.Column(db.Integer, primary_key=True)
    risk_level = db.Column(db.String(40), nullable=False)
    opts = db.Column(db.String(250), nullable=False)
    urls_affected = db.Column(db.Text, nullable=False)

@app.route("/select_findings", methods=['GET','POST'])
def select_findings():
        form = SelectForm()
        if form.validate_on_submit():
            finding_choice=Choice(risk_level=form.risk_level.data,
            opts=form.opts.data, urls_affected=form.urls_affected.data)
            db.session.add(finding_choice)
            db.session.commit()
            flash('Finding added to report','success')
            return redirect(url_for('select_findings'))
        return render_template('select_findings.html', title='Select Findings', form=form)
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...