Невозможно создать новую "публикацию" (исследование) с помощью SelectField с формами колб.
Я пытаюсь установить приложение "Study" для своего сайта. В «новом исследовании» tempalte я получаю ошибку «Неправильный выбор» от SelectField. Я настроил кортежи:
(идентификатор, метка)
с принуждением = int.
Я пробовал также такие кортежи, как:
(«Открытие», «Открытие»)
без принуждения = int. В обоих случаях я получаю одинаковую ошибку
# forms.py:
from flask_wtf import FlaskForm
from wtforms import StringField, SubmitField, TextAreaField, SelectField
from wtforms.validators import DataRequired
choices = [(1, 'Opening'), (2, 'Middlegame'), (3, 'Endgame'), (4, 'Match')]
class StudyForm(FlaskForm):
title = StringField('Title', validators=[DataRequired()])
content = TextAreaField('Content', validators=[DataRequired()])
category = SelectField('Category', choices = choices, validators = [DataRequired()], coerce=int)
board = StringField('Embeded board', validators=[DataRequired()])
submit = SubmitField('Add game')
# models.py
class Study(db.Model):
id = db.Column(db.Integer, primary_key = True)
title = db.Column(db.String(100), nullable = False)
content = db.Column(db.Text, nullable = False)
user_id = db.Column(db.Integer, db.ForeignKey('user.id'), nullable = False)
board = db.Column(db.String(100), nullable = False)
category = db.Column(db.Integer, nullable = False) #tried also with db.String(100) now I'm not sure which i should choose
# routes.py
@studies.route("/study/new", methods=['GET', 'POST'])
@login_required
def new_study():
form = StudyForm()
if form.validate_on_submit():
study = Study(title=form.title.data, content=form.content.data, user_id=current_user, board=form.board.data, category=form.category.data)
db.session.add(study)
db.session.commit()
flash('Your study has been created!', 'success')
return redirect(url_for('main.home'))
return render_template('create_study.html', title='New Study',
form=form, legend='New Study')
#create_study.html
{{ form.category.label(class="form-control-label") }}
<select class="custom-select custom-select-lg mb-3" id=category name=category>
<option value="1">Opening</option>
<option value="2" selected>Middlegame</option>
<option value="3">Endgame</option>
<option value="4">Match</option>
</select>