【问题标题】:How to search by different parameters with Django REST API? [closed]如何使用 Django REST API 按不同的参数进行搜索? [关闭]
【发布时间】:2021-09-09 09:27:07
【问题描述】:

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

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

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


例子:

搜索字符串:游戏笔记本

价格:从 400 美元到 1000 美元

评分:3星以上

...


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

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

这些过滤器是可选的。

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

【问题讨论】:

  • 有太多的方法可以做到这一点。查询字符串是一个,但可以有任何东西,包括 POST 中的数据。只需做一个并确保它有意义。

标签: python django search filter


【解决方案1】:

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

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)。

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

我希望这会有所帮助。编码愉快!

【讨论】:

    猜你喜欢
    • 2018-04-25
    • 1970-01-01
    • 1970-01-01
    • 2016-06-14
    • 2022-11-17
    • 1970-01-01
    • 1970-01-01
    • 2020-04-08
    • 1970-01-01
    相关资源
    最近更新 更多