Add query parameter filtering to list method

This commit is contained in:
Mahmoud-Barry 2023-04-17 21:02:43 +00:00
parent 5f024d9c78
commit 414e582c26

View File

@ -37,15 +37,14 @@ class ListModelMixin:
List a queryset. List a queryset.
""" """
def list(self, request, *args, **kwargs): def list(self, request, *args, **kwargs):
queryset = self.filter_queryset(self.get_queryset()) queryset = self.filter_queryset(self.get_queryset())
query_params = request.query_params try:
params = {key: value for key, value in query_params.items() params = {key: value for key, value in request.query_params.items() if key in self.model._meta.get_fields()}
if key in self.model._meta.get_fields()} if params is not None:
queryset = queryset.filter(**params)
if params: except AttributeError:
queryset = self.queryset.filter(**params) pass
page = self.paginate_queryset(queryset) page = self.paginate_queryset(queryset)
if page is not None: if page is not None:
@ -56,8 +55,6 @@ class ListModelMixin:
return Response(serializer.data) return Response(serializer.data)
class RetrieveModelMixin: class RetrieveModelMixin:
""" """
Retrieve a model instance. Retrieve a model instance.