Обновление модели Django с полем OneToOne приводит к "Дублированию записи для id"

У меня есть запрос PUT, который должен обновить мою модель Django с полем OneToOne, связанным с другой моделью. После успешного выполнения этого запроса один раз, если я попробую его снова, то на serialize.save() я получу (1062), Duplicate entry '1 for key 'linked_model_id'.

В моем models.py:

class ModelToUpdate
linked_model = (LinkedModel, null=False, on_delete=models.deletion.CASCADE)
other_stuff

В моем файле views.py:

class ModelToUpdateView(arg):
        def put(self, request):
        linked_model = request.linked_model
        model_to_update = (linked_model.model_to_update if hasattr(linked_model, 'model_to_update')
                    else ModelToUpdate(linked_model=request.linked_model) )
    
        serializer = ModelToUpdateSerializer(model_to_update, data=request.data)
        if serializer.is_valid():
            serializer.save()
            return Response(serializer.data)
        return Response(serializer.errors, status=status.HTTP_400_BAD_REQUEST)

В serializers.py:

class ModelToUpdateSerializer():
    class Meta:
        model = ModelToUpdate
        fields = ['all', 'my', 'fields', 'in', 'the', 'model']

Это такой же формат, как и у других моделей в приложении с OneToOneField, которые успешно обновляются.

Вернуться на верх