Почему Django's OneToOneField возвращает 500, если отношение уже существует

В представлении POST в Django REST Framework, есть ли способ избежать HTTP 500, если отношение OneToOneField уже существует?

Вместо этого было бы здорово получить HTTP 400.

Спасибо.

Когда вы передали owner таким образом serializer.save(owner=self.request.user) сериализатор не выполняет валидацию. Вы должны переписать create вместо perform_create метод для этого


class ClubRegistrationView(generics.CreateAPIView):
    queryset = Club.objects.all()
    serializer_class = ClubSerializer
    permission_classes = [IsAuthenticated]

    def create(self, request, *args, **kwargs):
        request.data["owner"] = request.user.pk
        return super().create(request, *args, **kwargs)

Здесь ошибка валидации:

{'user': ['This field must be unique.']}
Вернуться на верх