From e3d5554c4af242223544cce8a31b7b6b7c59ac9d Mon Sep 17 00:00:00 2001 From: Mahmoud-Barry Date: Mon, 17 Apr 2023 20:26:17 +0000 Subject: [PATCH] Add query parameter filtering to list method --- rest_framework/mixins.py | 15 +++++++++++++++ 1 file changed, 15 insertions(+) diff --git a/rest_framework/mixins.py b/rest_framework/mixins.py index 6ac6366c7..93ce07794 100644 --- a/rest_framework/mixins.py +++ b/rest_framework/mixins.py @@ -37,8 +37,21 @@ class ListModelMixin: List a queryset. """ def list(self, request, *args, **kwargs): + queryset = self.filter_queryset(self.get_queryset()) + query_params = request.query_params + if query_params is not None: + params = {} + for key, value in query_params.items(): + try: + if self.model._meta.get_field(key): + params[key] = value + except FieldDoesNotExist: + pass + if(params): + queryset = self.queryset.filter(**params) + page = self.paginate_queryset(queryset) if page is not None: serializer = self.get_serializer(page, many=True) @@ -47,6 +60,8 @@ class ListModelMixin: serializer = self.get_serializer(queryset, many=True) return Response(serializer.data) + + class RetrieveModelMixin: """