Обновление модели 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
, которые успешно обновляются.