заполнить FlaskForm значением, переданным строкой запроса - PullRequest
0 голосов
/ 05 мая 2020

Я хотел бы предварительно заполнить форму поиска, передав идентификатор элемента в поле c из других представлений (ссылка). Поэтому, когда я получаю доступ к /? TestFieldString = 12, должен быть выбран элемент с идентификатором 12

Он отлично работает для всех полей, которые мне нужны, кроме типа поля SelectMultipleField. Когда я получаю доступ к /? TestFieldSelectMultipleField = 12, он разбивает 12 по цифрам и передает ['1', '2'], в результате чего нужно выбрать 2 элемента (идентификаторы 1 и 2) вместо одного с идентификатором 12

Пожалуйста, запустите ниже код, чтобы воссоздать проблему

from flask import Flask, request
from flask_wtf import FlaskForm
from wtforms import StringField, SelectField, SelectMultipleField, SubmitField
from wtforms.fields.html5 import IntegerField, DecimalField


app = Flask(__name__)
app.config['SECRET_KEY'] = 'NotSoSecret'

class TestForm(FlaskForm):
    testFieldString = StringField('testFieldString')
    testFieldInteger = IntegerField('testFieldInteger')
    testFieldDecimal = DecimalField('testFieldDecimal')
    testFieldSelectField = SelectField('testFieldSelectField', coerce=int)
    testFieldSelectMultipleField = SelectMultipleField('testFieldSelectMultipleField', coerce=int)
    submit = SubmitField('Search')


@app.route('/')
def test():
    test_value = '12'
    query_string = dict()
    query_string['testFieldString'] = test_value
    query_string['testFieldInteger'] = test_value
    query_string['testFieldDecimal'] = test_value
    query_string['testFieldSelectField'] = test_value
    query_string['testFieldSelectMultipleField'] = test_value
    query_string['aaa'] = 'bbb'

    form = TestForm(**query_string)
    result = f'''
    testFieldString: {form.testFieldString.data}</br>
    testFieldInteger: {form.testFieldInteger.data}</br>
    testFieldDecimal: {form.testFieldDecimal.data}</br>
    testFieldSelectField: {form.testFieldSelectField.data}</br>
    testFieldSelectMultipleField: {form.testFieldSelectMultipleField.data}</br>
    '''
    return result

if __name__ == '__main__':
    app.run(debug=True)
...