如何使用 Django REST API 按不同参数进行搜索?
How to search by different parameters with Django REST API?
假设我正在为将有产品或其他东西的应用程序开发后端,并且该应用程序将通过 REST API.
与服务器通信
每个产品都有多个字段,如标题、描述、价格、评级...
多字段过滤的好方法有哪些?
例子:
搜索字符串:游戏笔记本电脑
价格:从 400 美元到 1000 美元
评分:3 星以上
...
我打算用一个字符串来确认 pre-defined 搜索、获取、解析并返回结果的规则。
所以,URL 看起来像这样:www.foo.com/products/search/contains=laptop&min_price=400&max_price=1000&min_stars=3
。
这些过滤器是可选的。
不确定获取单个字符串然后解析它是否是最好的方法。
您可以通过像这样使用 Q 函数添加查询来做到这一点 query = Q(price=myPrice)
,然后假设在某个条件下您想向其添加另一个“和”条件
if conditional_variable:
query =& Q(name=productName)
(同样的事情适用于 or 语句),而不是应用它,你可以像这样 products = Products.objects.filter(query)
,另一方面,使条件大于或小于你可以这样做
Products.objects.filter(product_price__lte=1000)
这意味着小于或等于
您有 lt -> 小于,gt-> 大于,gte-> 大于或等于。
使用那些你可以组合而不是你想要的,并使用 or 进行多个查询(我们使用 | for or)。
在我看来,对于复杂的查询,不要在 url 中使用 get 参数进行过滤,而是尝试像上面那样在 post 中使用它们 returns想要。
希望对您有所帮助。编码愉快!
假设我正在为将有产品或其他东西的应用程序开发后端,并且该应用程序将通过 REST API.
与服务器通信每个产品都有多个字段,如标题、描述、价格、评级...
多字段过滤的好方法有哪些?
例子:
搜索字符串:游戏笔记本电脑
价格:从 400 美元到 1000 美元
评分:3 星以上
...
我打算用一个字符串来确认 pre-defined 搜索、获取、解析并返回结果的规则。
所以,URL 看起来像这样:www.foo.com/products/search/contains=laptop&min_price=400&max_price=1000&min_stars=3
。
这些过滤器是可选的。
不确定获取单个字符串然后解析它是否是最好的方法。
您可以通过像这样使用 Q 函数添加查询来做到这一点 query = Q(price=myPrice)
,然后假设在某个条件下您想向其添加另一个“和”条件
if conditional_variable:
query =& Q(name=productName)
(同样的事情适用于 or 语句),而不是应用它,你可以像这样 products = Products.objects.filter(query)
,另一方面,使条件大于或小于你可以这样做
Products.objects.filter(product_price__lte=1000)
这意味着小于或等于
您有 lt -> 小于,gt-> 大于,gte-> 大于或等于。 使用那些你可以组合而不是你想要的,并使用 or 进行多个查询(我们使用 | for or)。
在我看来,对于复杂的查询,不要在 url 中使用 get 参数进行过滤,而是尝试像上面那样在 post 中使用它们 returns想要。
希望对您有所帮助。编码愉快!