Неверная схема в документации DRF для пользовательского действия ViewSet - PullRequest
0 голосов
/ 01 декабря 2018

У меня есть такой 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()

А на странице rest_framework.documentation я вижу такую ​​форму для действия set_default: enter image description here

Проблема в том, что "set_default" на самом деле не нужно предоставлять все эти поля, он требует (и использует) только идентификатор!

Что я могу сделать с этим?

1 Ответ

0 голосов
/ 01 декабря 2018

Если вам не нужно отправлять эти данные в теле, то почему бы вам не использовать метод get?

@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})
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...