Поле поиска Django Rest-Framework не работает внутри @action
Я пытаюсь использовать поле поиска, предлагаемое DRF, внутри действия, но, похоже, оно не работает. У меня была похожая проблема с пагинацией внутри экшена, но я нашел решение. Я предполагаю, что это переопределение ModelViewSet, поэтому я должен вручную добавить фильтрацию, но есть ли способ использовать те же поля поиска, которые предлагает DRF. Вот мой код:
class XViewSet(ModelViewSet):
queryset = X.objects.all()
serializer_class = XSerializer
permission_classes = [IsAdminUser]
filter_backends = (SearchFilter,OrderingFilter)
search_fields = ['a','b','c','d']
@action(detail=False, methods=['GET'], permission_classes=[IsAuthenticated])
def me(self, request):
query = X.objects.filter(ex_id=request.user.id)
if request.method == 'GET':
serializer = XSerializer(query, many=True)
return Response(serializer.data)
Любая помощь приветствуется, спасибо :)
Я решил эту проблему, импортировав в начале параметр запроса, а затем отфильтровав набор запросов, вот обновленный код:
class XViewSet(ModelViewSet):
queryset = X.objects.all()
serializer_class = XSerializer
permission_classes = [IsAdminUser]
filter_backends = (SearchFilter,OrderingFilter)
search_fields = ['a','b','c','d']
@action(detail=False, methods=['GET'], permission_classes=[IsAuthenticated])
def me(self, request):
query = self.get_queryset()
query = query.filter(ex_id=request.user.id)
if request.method == 'GET':
query = self.filter_queryset(query)
serializer = XSerializer(query, many=True)
return Response(serializer.data)
Возможно, есть лучший способ написать этот код, но я просто хотел поделиться им со всеми.