Skip to content

Commit 310adb8

Browse files
committed
Add filtering and searching capabilities to Employee and Dept viewsets
1 parent 5cc3d65 commit 310adb8

File tree

1 file changed

+15
-4
lines changed

1 file changed

+15
-4
lines changed

apidemo/views.py

Lines changed: 15 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,5 @@
1-
from rest_framework import viewsets
1+
from rest_framework import viewsets, filters
2+
from rest_framework.permissions import IsAuthenticatedOrReadOnly
23
from apidemo.serializers import EmployeeSerializer, DepartmentSerializer
34
from apidemo.models import Employee,Department
45
# Create your views here.
@@ -7,16 +8,26 @@
78

89
class EmployeeViewSet(viewsets.ModelViewSet):
910
"""
10-
This viewset automatically provides 'CRUD' actions.
11+
API endpoint that allows employees to be viewed or edited.
12+
Supports filtering, searching, ordering, and pagination.
1113
"""
1214
queryset = Employee.objects.all()
1315
serializer_class = EmployeeSerializer
16+
filter_backends = [filters.SearchFilter, filters.OrderingFilter]
17+
search_fields = ["first_name", "last_name", "department__title"]
18+
ordering_fields = ["first_name", "last_name", "birthdate", "department__title"]
19+
permission_classes = [IsAuthenticatedOrReadOnly]
1420

1521

1622

1723
class DeptViewSet(viewsets.ModelViewSet):
1824
"""
19-
This viewset automatically provides 'CRUD' actions.
25+
API endpoint that allows departments to be viewed or edited.
26+
Supports searching, ordering, and pagination.
2027
"""
2128
queryset = Department.objects.all()
22-
serializer_class = DepartmentSerializer
29+
serializer_class = DepartmentSerializer
30+
filter_backends = [filters.SearchFilter, filters.OrderingFilter]
31+
search_fields = ["title"]
32+
ordering_fields = ["title"]
33+
permission_classes = [IsAuthenticatedOrReadOnly]

0 commit comments

Comments
 (0)