SQLAlchemy динамически фильтровать по разным столбцам? - PullRequest
0 голосов
/ 29 июня 2018

У меня есть выпадающий список, в котором пользователь может выбирать разные социально-экономические статусы, однако, статуи являются отдельными логическими столбцами, как мне динамически построить запрос, основанный на выборе разных столбцов?

Например, если у меня есть модель с именем SamPublicData и столбцы woman_owned, veteran_owned типа boolean (Postgres).

Скажем, у меня есть выпадающий список с надписью «Женщина принадлежит», «Ветеран принадлежит»: Прямо сейчас в колбе у меня:

socio = request.form['socio']
if socio == 'Woman Owned':
    SamPublicData.query.filter(SamePublicData.woman_owned.is_(True))
elif socio == 'Veteran Owned':
    SamPublicData.query.filter(SamePublicData.veteran_owned.is_(True))

Это не очень эффективно, есть ли способ динамически выбирать столбец фильтра?

1 Ответ

0 голосов
/ 29 июня 2018

Одна вещь, которую я сделал, это использование встроенного в getattr. Вы можете попробовать что-то вроде этого:

# map the string to the attribute name
def map_to_column_name(s):
    return '_'.join(s.lower().split(' '))

socio = request.form['socio']

SamPublicData.query.filter(getattr(SamePublicData, map_to_column_name(socio)).is_(True))
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...