我有一个Model类Products,其中我简单地将product-URL,product-title和product-price指定为属性。并让Serializer.py文件使用ModelSerializer并将数据传递到Reactjs现在,我不明白如何按价格过滤产品,因此,如果我在反应中获取API,则根据用户需要或我们的价格,高价将首先排序或低价排序选项...谢谢
答案 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
基本上,您不希望对您的订购进行硬编码,除非您始终确定要以这种方式订购结果。否则,过滤器后端是解决方法。