perform_create
не является правильным местом для таких проверок. Он ничего не возвращает.
Вы можете выполнить свою проверку в методе создания viewset:
class ProfileViewSet(viewsets.ModelViewSet):
...
def create(self, request, *args, **kwargs):
if Profile.objects.filter(owner=self.request.user).exists():
return Response(data={'detail': 'This user already has a profile'}, status=status.HTTP_400_BAD_REQUEST)
return super().create(request,*args,**kwargs)
Или вы можете оставить ваш viewset чистым и простым и выполнить проверку в валидаторе вашего сериализатора. метод. Вам просто нужно передать пользовательский экземпляр при создании сериализатора. Вы можете сделать это, используя контекст сериализатора. Контекстные документы .