DRF - routing additional HTTP methods for extra actions

Viewed 846

I'm trying to implement routing additional HTTP methods for extra actions using django rest framework but am getting an error at runserver

AttributeError: 'function' object has no attribute 'mapping'

Can't figure out what the issue is - Django 2.1.2, Python 3.6.5

class CustomerAPIViewSet(mixins.ListModelMixin,
                         mixins.CreateModelMixin,
                         mixins.RetrieveModelMixin,
                         mixins.UpdateModelMixin,
                         viewsets.GenericViewSet):
    permission_classes = (IsAuthenticated, CustomerAdminPermissions)
    serializer_class = CustomerSerializer
    queryset = Customer.objects.all()

    @action(detail=True)
    def order_guide(self, request, **kwargs):
        instance = self.get_object()
        serializer = CustomerDetailSerializer(instance)
        return Response(serializer.data)

    @order_guide.mapping.put
    def order_create(self, request, **kwargs):
        instance = self.get_object()
        serializer = CustomerDetailSerializer(instance, data=request.data)
        serializer.is_valid(raise_exception=True)
        serializer.save()
        return Response(serializer.data)
1 Answers

The @action.mapping for routing additional HTTP methods was introduced in Django Rest Framework version 3.9.0. Earlier versions with raise an AttributeError. Try upgrading your version of DRF.

pip install djangorestframework --upgrade
Related