如何在DRF中按价格过滤产品

时间:2020-09-23 21:55:26

标签: reactjs django django-rest-framework react-redux django-views

我有一个Model类Products,其中我简单地将product-URL,product-title和product-price指定为属性。并让Serializer.py文件使用ModelSerializer并将数据传递到Reactjs现在,我不明白如何按价格过滤产品,因此,如果我在反应中获取API,则根据用户需要或我们的价格,高价将首先排序或低价排序选项...谢谢

1 个答案:

答案 0 :(得分:0)

您可以通过多种方式执行此操作:

1。使用DRF过滤器后端:

DRF Filtering Documentation - Ordering

根据官方DRF文档,您需要在设置或视图中指定过滤器后端,如下所示:

from rest_framework import filters

class ProductListView(generics.ListAPIView):
    queryset = User.objects.all()
    serializer_class = ProductSerializer
    filter_backends = [filters.OrderingFilter]
    ordering_fields = ['price', ]

您将能够使用请求参数过滤列表:

http://example.com/api/products?ordering=price

或按以下顺序反向排序:

http://example.com/api/products?ordering=-price

2。对查询集中的排序进行硬编码

class ProductListView(generics.ListAPIView):
    queryset = User.objects.all().order_by('-score')
    serializer_class = ProductSerializer

基本上,您不希望对您的订购进行硬编码,除非您始终确定要以这种方式订购结果。否则,过滤器后端是解决方法。