我有一个模型类Products,在其中我简单地指定产品URL、产品标题和产品价格作为属性。并使Serializer.py文件使用ModelSerializer并将数据传递给Reactjs现在我不明白如何根据价格筛选产品,所以如果我在react中获取API,则根据用户需求或我们的选择,所有的高价格都先排序或后排序。。。感谢
有多种方法可以做到这一点:
1.使用DRF过滤器后端:
DRF过滤文档-订购
根据官方的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
基本上,你不想硬编码你的排序,除非你总是确定你希望结果是这样排序的。否则,过滤器后端就是最好的选择。