簡體   English   中英

如何從燒瓶中的QuerySelectField傳遞數據?

[英]How to pass data from a QuerySelectField in flask?

在我的應用程序中,我有一個QuerySelectField來填充下拉菜單。 我從數據庫獲取queryselectfield的選擇詳細信息。 一旦用戶從下拉菜單中選擇任何選項,然后單擊“提交”按鈕(這是一種POST方法),我想將用戶從下拉菜單中選擇的值傳遞給要存儲的數據庫。 但是它總是從queryselectfield返回值None。 因此,db將數據存儲為None。

models.py

class Orders(db.Model):
    __tablename__ = 'orders'
    id = db.Column(db.Integer, primary_key=True)
    name = db.Column(db.String(64))
    email = db.Column(db.String(120))
    resturant = db.Column(db.String(64))
    food = db.Column(db.String(64)))

forms.py

def possible_res():
    return Resturant.query.all()

def possible_menu():
    return Menu.query.all()

class OrderForm(Form):

    sel_res = QuerySelectField(query_factory=possible_res,
                               get_label='name')

    sel_menu = QuerySelectField(query_factory=possible_menu,
                                get_label='food',
                                allow_blank=False
                                )
    submit = SubmitField("Confirm")

views.py

@app.route('/resturant', methods=['GET','POST'])
def resturant():
    form = OrderForm()
    if request.method == 'GET':
        test = form.sel_menu.data
        return render_template("make_order.html", form=form, test=test)
    else:
        a = User.query.filter_by(email = session['email']).all()
        for u in a:
            name = u.firstname

        b = Orders(name=name, email=session['email'])
        b.resturant = form.sel_res.data
        b.food = form.sel_menu.data
        db.session.add(b)
        db.session.commit()
        return redirect('/')

QuerySelectField#__init__query_factory參數應返回SQLAlchemy Query對象,而不是Python列表。 WTForms將通過迭代查詢來實現查詢本身。 只需更改工廠函數以返回query屬性,而不是列表即可:

def possible_res():
    return Resturant.query

def possible_menu():
    return Menu.query

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM