从QuerySelectMultipleField按列表筛选的查询

2024-04-23 08:59:36 发布

您现在位置:Python中文网/ 问答频道 /正文


我是python和flask初学者,需要WTForms帮助:

我需要创建查询,根据QuerySelectMultipleField中选中的值进行过滤。在

在我的测试代码中,我有两个列表:

Dynamic (returned QuerySelectMultipleField) -–> list_d
Static (created manually) --> list_m

从QuerySelectMultipleField返回的列表是动态的,值例如:

[Jedna, Dva, Tri]

和手动创建的列表:

^{pr2}$

我的观点:

^{3}$

我的模板:

<div class="box-body">
{{ wtf.quick_form(form) }}
<p>Dynamic list: {{ list_d }}</p>
<p>Manual list: {{ list_m }}</p>
<p>ITEMS: {{ items }}</p>
</div>

我的型号:

class Item(db.Model):
    __tablename__ = 'items'
    id = db.Column(db.Integer, primary_key=True)
    global_name = db.Column(db.String(64), unique=True, index=True)
    item_name1 = db.Column(db.String(64), unique=True, index=True)
    records = db.relationship('Record', backref='item', lazy='dynamic')

def __init__(self, global_name):
    self.global_name = global_name

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

我的表格:

def select_items():
    return Item.query.all()

class TestForms(Form):
    selectMultiple = QuerySelectMultipleField(query_factory=select_items,
                                              allow_blank=True,
                                              )
    submit = SubmitField('Submit')



我的问题是:
手动创建使用列表时:

items = Item.query.filter(Item.global_name.in_(list_m)).all()

一切正常,在“项目”中,我可以看到由列表中的值筛选的值。

但是当使用list_d(从QuerySelectMultipleField返回)时:

items = Item.query.filter(Item.global_name.in_(list_d)).all()

我收到错误消息:

builtins.TypeError TypeError: expected string or buffer

“items”是无:/

解决方法可能很简单,但我目前的技能还不够。

谢谢你的回答。在


Tags: nameselftrue列表dbdefitemscolumn