Получение ошибки при сохранении модели восстановления в Django

Я получаю "django.db.utils.IntegrityError: UNIQUE constraint failed: app_recovery.id" Ошибка при сохранении моей модели восстановления: Я отправил POST запрос на PostMen с данными

{'party': 1, 'party_order': '2', 'sale_officer': 1, 'payment_method': 'Clearing', 'bank': '', 'amount': '500000', 'description': 'Group Восстановление'}

.

Итс поднял ограничение UNIQUE, но сохранил Data.

Моя модель :

serializer:

class RecoverySerializer(serializers.ModelSerializer):
    class Meta:
        model = m.Recovery
        fields = '_all_'

    def to_representation(self, instance):
        response = super().to_representation(instance)
        response['bank'] = BankSerializer(instance.bank).data
        response['party'] = PartySerializer(instance.party).data
        response['party_order'] = PartyOrderSerializer(instance.party_order).data
        response['sale_officer'] = SalesOfficerSerializer(instance.sale_officer).data
        return response

просмотр :

class RecoveryViewSet(viewsets.ViewSet):
                        def create(self, request):
        # if request.user.is_superuser or p.SalesOfficer(request):
        if request:
            # try:
            serializer = s.RecoverySerializer(
                data=request.data, context={"request": request})
            print(request.data)
            serializer.is_valid(raise_exception=True)
            # print(serializer.errors)
            serializer.save()
            print(serializer.errors)
            dict_response = {"error": False,
                            "message": "Data Save Successfully"}
            # except ValueError as err:
            #     dict_response = {"error": True, "message": err}
            # except:
            #     dict_response = {"error": True,
            #                     "message": "Error During Saving Data"}

        return JsonResponse(dict_response)

Помогите, пожалуйста, решить эту проблему

Проблема находится в последней строке вашего метода сохранения, а именно :-

super(Recovery, self).save(*args, **kwargs)

Вместо этого вы должны получить объект восстановления и затем выполнить операцию сохранения над объектом.

def save(self, *args, **kwargs):
    if self.id == None:
        super(Recovery, self).save(*args, **kwargs)
    else:
        recovery = Recovery.objects.get(id=self.id)
         ...
         ...

         recovery.save()
if self.id == None:
        super(Recovery, self).save(*args, **kwargs)
    else:
        recovery = Recovery.objects.get(id=self.id)
         ...
         ...

super(Recovery, self).save(*args, **kwargs) <--- remove from here
    super(Recovery, self).save(*args, **kwargs) <--- place it in else condition
Вернуться на верх