SelectField "Неверный выбор"

Невозможно создать новую «публикацию» (исследование) с помощью SelectField с формами Flask.

Я пытаюсь использовать приложение «Учеба» для своего веб-сайта. В шаблоне «новое исследование» я получаю сообщение об ошибке «Недопустимый выбор» от SelectField. Я настроил кортежи: (идентификатор, метка) с принудительным = целое.

Я пробовал также такие кортежи, как: («Открытие», «Открытие») без принуждения=внутр. В обоих случаях я получаю ту же ошибку

# 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>

Вы сказали, что пробовали с ('Opening', 'Opening'), и вы также изменили значения формы html на те же?

Raja Simon 22.01.2019 14:12

Можете ли вы распечатать это значение: form.category.data, когда вы пытаетесь сохранить данные формы в своей базе данных, чтобы мы могли видеть, что это за значение.

Nathan 22.01.2019 16:38

Напечатанное значение <class 'int'> 3.

DrJoe 23.01.2019 20:31
Почему в Python есть оператор "pass"?
Почему в Python есть оператор "pass"?
Оператор pass в Python - это простая концепция, которую могут быстро освоить даже новички без опыта программирования.
Некоторые методы, о которых вы не знали, что они существуют в Python
Некоторые методы, о которых вы не знали, что они существуют в Python
Python - самый известный и самый простой в изучении язык в наши дни. Имея широкий спектр применения в области машинного обучения, Data Science,...
Основы Python Часть I
Основы Python Часть I
Вы когда-нибудь задумывались, почему в программах на Python вы видите приведенный ниже код?
LeetCode - 1579. Удаление максимального числа ребер для сохранения полной проходимости графа
LeetCode - 1579. Удаление максимального числа ребер для сохранения полной проходимости графа
Алиса и Боб имеют неориентированный граф из n узлов и трех типов ребер:
Оптимизация кода с помощью тернарного оператора Python
Оптимизация кода с помощью тернарного оператора Python
И последнее, что мы хотели бы показать вам, прежде чем двигаться дальше, это
Советы по эффективной веб-разработке с помощью Python
Советы по эффективной веб-разработке с помощью Python
Как веб-разработчик, Python может стать мощным инструментом для создания эффективных и масштабируемых веб-приложений.
0
3
352
0

Другие вопросы по теме