SQLAlchemy Flask,匹配部分或全部

时间:2013-12-17 01:10:14

标签: python sqlalchemy flask

我有一份名单,城市和州的学校名单(1000)。
有名称,城市和州输入字段 我想按名字搜索学校。如果他们将城市或州的输入留空,我想搜索任何城市,任何州。如果他们进入城市(留空状态),则按名称和城市搜索。等等。

底线:使用可用数据进行搜索,其他所有内容均为“任意”。

除了编写所有可能的组合之外,还有一种快速的方法吗?

1 个答案:

答案 0 :(得分:3)

我写的就好像你正在使用Flask-SQLAlchemy和WTForms。

...
schools = School.query

if form.name.data:
    schools = schools.filter(School.name == form.name.data)

if form.city.data:
    schools = schools.filter(School.city == form.city.data)

if form.state.data:
    schools = schools.filter(School.state == form.state.data)

# at this point schools is a query filtered with whatever was given
...

这只是一个例子,改写它,使用除了相等之外的过滤器等。我有这样的“过滤器表单”,并且会在表单query()filter(query)上添加额外的方法。然后可以在视图中这样调用它们:

form = FilterForm(request.args)  # use get for filtering
schools = form.query()
if form.validate():
    schools = form.filter(schools)
return render_template('schools.html', form=form, schools=schools)