首页 > 解决方案 > 如何使用 Django REST API 按不同的参数进行搜索?

问题描述

假设我正在为具有产品或其他东西的应用程序开发后端,并且该应用程序将通过 REST API 与服务器通信。

每个产品将有多个字段,如标题、描述、价格、评级......

按多个字段过滤的好方法有哪些?


例子:

搜索字符串:游戏笔记本电脑

价格:从 400 美元到 1000 美元

评分:3星以上

...


我打算有一个字符串来确认搜索、获取、解析和返回结果的预定义规则。

因此,URL 看起来像这样:www.foo.com/products/search/contains=laptop&min_price=400&max_price=1000&min_stars=3.

这些过滤器是可选的。

不确定是否采用单个字符串然后解析它是最好的方法。

标签: pythondjangosearchfilter

解决方案


您可以通过像这样使用 Q 函数添加查询来做到这一点query = Q(price=myPrice),然后假设在某个条件下您想要向其添加另一个“和”条件

if conditional_variable:
    query =& Q(name=productName) 

(同样的事情适用于或陈述),而不是应用它,你可以这样做products = Products.objects.filter(query),另一方面,使条件大于或小于你可以这样做

Products.objects.filter(product_price__lte=1000)

这意味着小于或等于

您有 lt -> 小于、gt-> 大于、gte-> 大于或等于。使用您可以组合的那些,而不是您想要的,并使用 or 进行多个查询(我们使用 | for or)。

在我看来,对于复杂的查询,不要使用 get 过滤 url 中的 get 参数,而是尝试像上面那样在返回您想要的内容的帖子中执行它们。

我希望这有帮助。快乐编码!


推荐阅读