Запрос отфильтрован по списку из QuerySelectMultipleField
я начинающий по питону и фляге, и мне нужна помощь с WTForms:
Мне нужно создать запрос, отфильтрованный по значениям, проверенным в QuerySelectMultipleField.
В моем тестовом коде у меня есть два списка:
Динамический (возвращается QuerySelectMultipleField) -–> list_d
Статический (создан вручную) -> list_m
Список, возвращаемый из QuerySelectMultipleField, является динамическим и значения, например:
[Jedna, Dva, Tri]
И список создан вручную:
list_m = ['Jedna', 'Dva', 'Tri']
Мой взгляд:
@admin.route('/tests', methods=['GET', 'POST'])
def tests():
list_d = None
list_m = None
items = None
form = TestForms()
if form.validate_on_submit():
list_d = form.selectMultiple.data
list_m = ['Jedna', 'Dva', 'Tri']
items = Item.query.filter(Item.global_name.in_(list_m)).all()
# items = Item.query.filter(Item.global_name.in_(list_d)).all()
return render_template('admin/tests.html',
form=form,
list_d=list_d,
list_m=list_m,
items=items,
)
MyTemplate:
<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>
MyModel:
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)
MyForm:
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()
все отлично работает и в "items" я вижу значения, отфильтрованные по значениям из list_m.
Но когда используется list_d (возвращается из QuerySelectMultipleField):
items = Item.query.filter(Item.global_name.in_(list_d)).all()
Я получаю сообщение об ошибке:
builtins.TypeError TypeError: ожидаемая строка или буфер
и "предметы" отсутствуют:/
Решение, вероятно, простое, но моих нынешних навыков недостаточно.
Спасибо за любой ответ.