Запрос отфильтрован по списку из 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: ожидаемая строка или буфер

и "предметы" отсутствуют:/

Решение, вероятно, простое, но моих нынешних навыков недостаточно.

Спасибо за любой ответ.

0 ответов

Другие вопросы по тегам