无法处理 django-rest-framework 上的响应错误

Cant handle a response error on django-rest-framework

我正在尝试 return 400 个错误的请求响应,当创建公司的用户试图在我的 API

上创建另一个时

我尝试了 Response 但它不起作用,它似乎没有进入 if

class CompanyViewSet(generics.ListCreateAPIView):
    serializer_class = CompanySerializer
    permission_classes = [permissions.IsAuthenticated]

    def get_queryset(self):
        return UserCompany.objects.filter(owner=self.request.user.id)

    def perform_create(self, serializer):
        queryset = UserCompany.objects.filter(owner=self.request.user.id)

        if queryset.exists():
            content = {'API response error:': 'Can have only a one company for every user'}
            return Response(content, status=status.HTTP_400_BAD_REQUEST)
        else:
            serializer.save(owner=self.request.user)

当我在已经有一个 return 状态 200 但没有创建它的用户中创建公司时,我希望它成为 return 状态 400

因为perform_create只保存serializer。如果你想要控制状态响应,你应该覆盖create。像这样尝试:

def create(self, request, *args, **kwargs):
    queryset = UserCompany.objects.filter(owner=self.request.user.id)
    if queryset.exists():
        content = {'API response error:': 'Can have only a one company for every user'}
        return Response(content, status=status.HTTP_400_BAD_REQUEST)
    serializer = self.get_serializer(data=request.data)
    serializer.is_valid(raise_exception=True)
    self.perform_create(serializer)
    headers = self.get_success_headers(serializer.data)
    return Response(serializer.data, status=status.HTTP_201_CREATED, headers=headers)