Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

DRF - routing additional HTTP methods for extra actions

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)
like image 521
bdoubleu Avatar asked Aug 28 '26 00:08

bdoubleu


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
like image 103
Will Keeling Avatar answered Aug 29 '26 15:08

Will Keeling



Donate For Us

If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!