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

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


看起来效率不是很高,有没有办法动态选择过滤器列?

最佳答案

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

关于python - SQLAlchemy动态筛选不同的列?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/51105702/

10-08 22:10