自定义ViewSet操作的DRF文档中的架构不正确

时间:2018-12-01 05:51:46

标签: python django django-rest-framework

我有这样的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”实际上不需要提供所有这些字段,它仅需要(并使用)id!

我该怎么办?

1 个答案:

答案 0 :(得分:1)

如果您不需要在体内发送这些数据,那为什么不使用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})