如何使用 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想要。

希望对您有所帮助。编码愉快!