@xenu-xore

Как предварительно заполнить WTforms из объекта SQLAlchemy для SelectField?

from flask_wtf import Form
from flask_wtf.csrf import CSRFProtect
from wtforms import IntegerField, StringField, SelectField, validators, 
ValidationError
from flask import Flask, request, flash, render_template

app = Flask(__name__)
app.secret_key = 'xxxxxxxxxxxx'
csrf = CSRFProtect(app)


pChoices = [('-1', '-----'),
            ('0', 'Cat'),
            ('1', 'Dog'),
            ('2', 'Parrot'),
            ('3', 'Hamster')]


class paymentForm(Form):
    productF = SelectField('productF', [validators.input_required("Please choose a pet.")], choices=[pChoices], coerce=int)
    buyer_id = StringField('buyer', [validators.input_required("Please enter your name.")])
    paid = DecimalField('paid', [validators.input_required("please enter payment amount")])


@app.route('/', methods=['POST', 'GET'])
def index():
    form = paymentForm(request.form, csrf_enabled=True)
    if form.validate_on_submit():
        flash('Order Placed Successfully', 'success')
        data = form.data
        record_order(data)
        print(data['price'])
        return render_template('confirmation.jinja',
                               pets=PETS,
                               title='Confirmation Page',
                               form=form, error=form.errors,
                               ** context)
    elif not form.validate_on_submit:
        flash('Submission error, please check the form', 'success')
    return render_template('index.jinja',
                               title='Order Form',
                               form=form,
                               error=form.errors,
                               **context)

if __name__ == '__main__':
    app.run(debug=True, use_reloader=True)
  • Вопрос задан
  • 28 просмотров
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы
PitchMe Санкт-Петербург
от 180 000 ₽
DevStation Новосибирск
от 90 000 до 120 000 ₽
28 янв. 2021, в 14:43
2490 руб./за проект
28 янв. 2021, в 14:38
5000 руб./за проект
28 янв. 2021, в 14:34
1500 руб./за проект