Add query parameter filtering to list method

This commit is contained in:
Mahmoud-Barry 2023-04-17 20:26:17 +00:00
parent 38a74b42da
commit e3d5554c4a

View File

@ -37,8 +37,21 @@ 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
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) page = self.paginate_queryset(queryset)
if page is not None: if page is not None:
serializer = self.get_serializer(page, many=True) serializer = self.get_serializer(page, many=True)
@ -47,6 +60,8 @@ class ListModelMixin:
serializer = self.get_serializer(queryset, many=True) serializer = self.get_serializer(queryset, many=True)
return Response(serializer.data) return Response(serializer.data)
class RetrieveModelMixin: class RetrieveModelMixin:
""" """