Получение ошибки при сохранении модели восстановления в 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