2017-04-21 82 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 

希望这有助于。