Почему 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.']}