我有一个下拉菜单,用户可以在其中选择不同的社会经济状态,但是,这些雕像是独立的布尔列,如何根据选择的不同列动态构建查询?
例如,如果我有一个名为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/