2
Since you have a model and you want to list, retrieve and create instances, I would recommend you to use Viewsets
. So, it would be sth like:
from rest_framework import viewsets
from rest_framework.decorators import detail_route
class NumViewSet(viewsets.ModelViewSet):
queryset = Num.objects.all()
serializer_class = NumSerializer
# This method will return the sum of num1 and num2
@detail_route(methods=['get'], permission_classes=[])
def add_num(self, request, pk=None):
num = Num.objects.get(pk=pk)
sum = num.num1 + num.num2
return HttpResponse(content=sum, status=200)
It’s enough, the class ModelViewSet
have list()
, retrieve()
, create()
, update()
and destroy()
methods that you can override or not.
Your urls.py could be sth like:
from rest_framework import routers
router = routers.SimpleRouter()
router.register(r'num', NumViewSet)
urlpatterns = router.urls
And access the the method add_num()
at /num/{pk}/add_num/
.
Source:stackexchange.com