我正在使用Python EVE,EVE-SQLAlchemy,Flask,Flask-SQLAlchemy,SQLAlchemy和Postgres数据库 .
我有我的API endpoints 所有设置,他们正在开箱即用 .
现在我正在尝试过滤some_model资源返回的项目,以便它只返回属于某个用户的项目(GET)(执行API请求的用户)或具有特定名称(前缀) . 执行此操作的SQlAlcehmy代码如下:
session.query(SomeModel).filter(or_(SomeModel.name.like('SOMETHING_%'), SomeModel.account_id==1)).all()
我已经查看了请求前后挂钩,用户限制资源访问以及我能找到的其他所有内容,但似乎没有描述如何将自定义过滤器应用于某些 endpoints /资源的(所有)GET请求 .
有点像URL过滤功能,但始终在数据库级别上进行过滤,而不是序列化/响应级别 .
2 回答
如果我理解正确,看起来Dynamic Lookup Filter内的Dynamic Lookup Filter将适合您的过滤需求 .
我不知道
like
查询的确切语法,但or
可以像这样实现:(我测试了它,它的工作原理)对于
like
查询,请查看this是否有帮助 .