我有一个下拉菜单,用户可以选择不同的社会经济状态,但是,雕像是独立的布尔列,如何基于选择的不同列来动态构建查询?
例如,如果我有一个名为SamPublicData
的模型和类型为woman_owned
(Postgres)的列veteran_owned
和boolean
。
说我有一个下拉菜单框,其中有“女人拥有”,“经验丰富”: 现在在烧瓶中,我有:
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))
这看起来不是很有效,有没有办法动态选择过滤器列?
答案 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))