Pavel Shishmarev
Pavel Shishmarev

Reputation: 1483

Incorrect schema in DRF documentation for custom ViewSet action

I have such ViewSet:

class CarViewSet(ModelViewSet):
"""
Работа пользователя с его машинами.
"""
serializer_class = CarSerializer
permission_classes = [IsUser]
filter_fields = '__all__'
ordering_fields = '__all__'

def perform_create(self, serializer):
    serializer.save(user=self.request.user.useraccount)

def get_queryset(self):
    return Car.objects.filter(user=self.request.user)

@action(methods=['POST'], detail=True)
def set_default(self, request, pk=None):
    """
    Установить указанную машину по умолчанию
    """
    car = get_object_or_404(self.get_queryset(), pk=pk)
    car.is_default = True
    car.save()
    return Response()

And in rest_framework.documentation page I see such form for a "set_default" action: enter image description here

The problem is "set_default" actually don't need to provide all of these fields, it requires(and uses) only id!

What can I do with this?

Upvotes: 0

Views: 108

Answers (1)

ruddra
ruddra

Reputation: 51988

If you don't need to send these data in body, then why don't you use get method?

@action(methods=['GET'], detail=True)
def set_default(self, request, pk=None):
    """
    Установить указанную машину по умолчанию
    """
    car = get_object_or_404(self.get_queryset(), pk=pk)
    car.is_default = True
    car.save()
    return Response({"updated":True})

Upvotes: 1

Related Questions