我有这样的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”操作:
问题是“ set_default”实际上不需要提供所有这些字段,它仅需要(并使用)id!
我该怎么办?
答案 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})