【发布时间】:2020-08-29 16:14:43
【问题描述】:
任何人都知道如何在视图集的列表/检索功能上实现搜索过滤器?
我正在尝试在 ViewSet 上使用 DRF Searh-filter,但它不起作用(它不会返回过滤的对象)。
我想要返回的是类似 --> /store/1/locker/1/controller?controller={name_controller}
view.py
class ControllerViewSet(viewsets.ModelViewSet):
serializer_class = ControllerSerializer
queryset = Controller.objects.all()
filter_backends = [filters.SearchFilter]
search_fields = ['controller']
def list(self, request, store_pk=None, locker_pk=None):
queryset = Controller.objects.filter(locker__store=store_pk, locker=locker_pk)
serializer = ControllerSerializer(queryset, many=True, context={'request': request})
return Response(serializer.data)
def retrieve(self, request, pk=None, store_pk=None, locker_pk=None):
queryset = Controller.objects.filter(pk=pk, locker=locker_pk, locker__store=store_pk)
locker = get_object_or_404(queryset, pk=pk)
serializer = ControllerSerializer(locker, context={'request': request})
return Response(serializer.data)
【问题讨论】:
-
您是否在设置中设置了任何过滤器后端?您是如何准确调用 API 来过滤/搜索结果的?
-
是的,我按照 DRF 文档中的说明做了...通过如上所示的 url 是相同的但不返回对象,url 更改但不起作用
标签: python django django-rest-framework django-views django-filter