我正在尝试使用请求向Flask-Restless发送过滤器查询。结果未过滤。如何正确编写过滤器?
import requests
import json
q = {'filters': [{'task': 'build an API', 'task': 'profit'}]}
r = requests.get('http://127.0.0.1:5000/toworks', params={'q': json.dumps(q)})
我希望结果只包含第一个和第三个项目,但第二个项目也存在。
{
"towork1": {
"task": "build an API"
},
"towork2": {
"task": "?????"
},
"towork3": {
"task": "profit!"
}
}
答案 0 :(得分:1)
您用于过滤器的语法完全错误。应该有一个过滤器列表,每个过滤器都是带有name
,op
和value
键的字典。由于您要在任务的值内进行搜索,因此请在您要过滤的值之前和之后使用带有通配符(like
)的%
操作。您还需要使用or
,因为这两个过滤器是互斥的。
q = {'filters': [{'or': [
{'name': 'task', 'op': 'like', 'val': '%build%'},
{'name': 'task', 'op': 'like', 'val': '%profit%'}
]}]}