SQLAlchemy动态筛选不同的列?

2024-09-27 00:13:46 发布

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

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

例如,如果我有一个名为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))

这不是很有效,有没有一种方法可以动态选择过滤器列


Tags: 用户true列表is状态动态filterquery
1条回答
网友
1楼 · 发布于 2024-09-27 00:13:46

我所做的一件事就是使用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))

相关问题 更多 >

    热门问题