2017-04-21 3 views
0

でWTForms SelectFieldを移入し、私はこのクエリによって返される行とWTForms SelectFieldを移入したいよ:は、SQLクエリ

cur.execute("SELECT length FROM skipakke_alpin_ski WHERE stock > 0") 

クエリはスキー板の異なる種類のスキーの長さで行を返します。 cur.fetchall()は、以下のタプルを返します:各スキーの長さは、自身の選択の選択になるように

[(70,), (75,), (82,), (88,), (105,), (115,), (125,), (132,), (140,), (150,), (160,), (170,)] 

は、どのように私は、SelectFieldにこれらの数字を追加行うことを約行きますか?私がこれを手動で行った場合、私は次のようにしたでしょう:

ski_size = SelectField('Ski size', choices=['70', '70', '75', '75']) 

...など、さまざまな長さのすべてに対して。私は以下のように使用しているプロジェクトの一つで

答えて

0

私は、次の手順を実行して、この問題を解決するために管理:

def fetch_available_items(table_name, column): 
    with sqlite3.connect('database.db') as con: 
     cur = con.cursor() 
     cur.execute("SELECT length FROM skipakke_alpin_ski WHERE stock > 0") 
     return cur.fetchall() 

class SkipakkeForm(Form): 
    alpin_ski = SelectField('Select your ski size', choices=[]) 

@app.route('/skipakke') 
def skipakke(): 
    form = SkipakkeForm 

    # Clear the SelectField on page load 
    form.alpin_ski.choices = []   

    for row in fetch_available_items('skipakke_alpin_ski', 'length'): 
     stock = str(row[0]) 
     form.alpin_ski.choices += [(stock, stock + ' cm')] 
1

モデル

class PropertyType(db.Model): 
    id = db.Column(db.Integer, primary_key=True) 

    title = db.Column(db.String(255), nullable=False) 

    def __repr__(self): 
     return str(self.id) 

とフォーム

from wtforms.ext.sqlalchemy.fields import QuerySelectField 

class PropertyEditor(Form): 
    property_type = QuerySelectField(
     'Property Type', 
     query_factory=lambda: models.PropertyType.query, 
     allow_blank=False 
    ) 
    //Other remaining fields 

では、この情報がお役に立てば幸いです。