SQLAlchemy动态筛选不同的列?

时间:2018-06-29 16:07:09

标签: python sqlalchemy

我有一个下拉菜单,用户可以选择不同的社会经济状态,但是,雕像是独立的布尔列,如何基于选择的不同列来动态构建查询?

例如,如果我有一个名为SamPublicData的模型和类型为woman_owned(Postgres)的列veteran_ownedboolean

说我有一个下拉菜单框,其中有“女人拥有”,“经验丰富”: 现在在烧瓶中,我有:

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 :(得分:1)

我要做的一件事是使用内置的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))
相关问题