Как добавить значение «Нет» в Python Flask Dynami c SelectField, используя Flask -WTF? - PullRequest
0 голосов
/ 03 августа 2020

Я создал простой проект в Flask и хочу добавить значение None в свой раскрывающийся список. Вот фрагмент кода if, в котором я создал форму и назвал его MovementForm в моем файле forms.py

class MovementForm(FlaskForm):
    to_location = SelectField('To Location', choices=[])
    from_location = SelectField('From Location', choices=[])
    add_movement = SubmitField('Add Movement')

Это маршрут, по которому я добавляю свое движение

@app.route('/movements',methods=["GET","POST"])
def add_movements():
    form = MovementForm()
    form.to_location.choices = [(location.id, location.location_name) for location in Location.query.all()]
    form.from_location.choices = [(location.id, location.location_name) for location in Location.query.all()]
    return render_template('add_movements.html')

, а вот файл HTML

{%extends 'layout.html'%}
{% block content %}

<div class="container">
    <h2 class="text-center mt-3">
        Movements
    </h2>
    <form action="/movements" method="post">
        {{ form.csrf_token }}
        <div class="row">
            <div class="form-group col">
                {{ form.from_location.label(class="form-control-label") }}
                {{ form.from_location(class="form-control form-control-lg") }}
            </div>
            <div class="form-group col">
                {{ form.to_location.label(class="form-control-label") }}
                {{ form.to_location(class="form-control form-control-lg") }}
            </div>
        </div>
        <input type="submit" value="Add movement" class="form-control btn btn-primary">
    </form>
{% endblock %}

Я попытался добавить «Нет» к варианты, но возникла ошибка, как мне это сделать?

1 Ответ

1 голос
/ 03 августа 2020

Что за ошибка? Не могли бы вы добавить его к вопросу?

Кроме того, если вы измените его на FlaskForm flask, это решит проблему:

class MovementForm(FlaskForm):
    to_location = SelectField('To Location', coerce=int)
    from_location = SelectField('From Location', coerce=int)
    add_movement = SubmitField('Add movement')

В основном потому, что вы используете Dynami c Поле выбора, вы должны добавить «coerce = int» вместо choices = []

Кроме того, как вы добавляете поле «Нет»? Чего вы пытаетесь достичь?

РЕДАКТИРОВАТЬ

Я пытаюсь добавить поле выбора «Нет», например:

@app.route('/movements',methods=["GET","POST"])
def add_movements():
    form = MovementForm()
    form.to_location.choices = [(location.id, location.location_name) for 
    location in Location.query.all()]
    form.from_location.choices = [(location.id, location.location_name) for 
    location in Location.query.all()]

    // Adding the None in the choices select field in Index 0 
    form.to_location.choices.insert(0, (0, 'None'))
    form.from_location.choices.insert(0, (0, 'None'))

    return render_template('add_movements.html')
...