过滤Filtering和排序
DRF过滤
对于列表数据可能需要根据字段进行过滤,可通过添加django-fitlter扩展来增强支持。
pip install django-filter
在配置文件中增加过滤后端的设置:
INSTALLED_APPS = [ ... 'django_filters', # 需要注册应用, ] REST_FRAMEWORK = { 'DEFAULT_FILTER_BACKENDS': ('django_filters.rest_framework.DjangoFilterBackend',) }
在视图中添加filter_fields属性,指定可以过滤的字段
class BookListView(ListAPIView): queryset = Book.objects.all() serializer_class = BookSerializer filter_fields = ('title',) # 127.0.0.1:8000/books/?title=天龙八部
排序
前端可以传递的ordering参数的可选字段值需要在ordering_fields中指明。
例如:
class BookListView(ListAPIView): queryset = Book.objects.all() serializer_class = BookSerializer filter_backends = [OrderingFilter] ordering_fields = ('price', 'pub_date') # 127.0.0.1:8000/books/?ordering=-price 按照价格递减排序